Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共31 条记录, 每页显示 10 条, 页签: [1] [2][3][4]
[浏览完整版]

标题:事务处理问题

1楼
凡夫俗子 发表于:2016/4/28 20:56:00
 dim tran as SqlTransaction = null   ‘声明一个事务对象  
    try  
         dim conn as SqlConnection = new SqlConnection("server=.;uid=sa;pwd=sa;database=Test;"))  
          conn.Open() '打开链接  
               tran = conn.BeginTransaction()
                   dim copy as SqlBulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran))  
                   copy.Destinati  '指定服务器上目标表的名称  
                    copy.WriteToServer(MyDataTable)   '你的datatable名字,执行把DataTable中的数据写入DB  
                    tran.Commit()                                  '提交事务  
    catch (Exception ex)  
           tran.Rollback()    '返回False 执行失败!  
  end try
这段代码如何改成FT的事务处理了
2楼
大红袍 发表于:2016/4/28 23:47:00

1、必须是sqlserver数据库

 

2、

 

Dim tran As System.Data.SqlClient.SqlTransaction
try
    Dim conn As new System.Data.SqlClient.SqlConnection("server=voyo;uid=sa;pwd=hailun.;database=Test")
    conn.Open() '打开链接
    tran = conn.BeginTransaction()
    Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第一列", "第一列")
    Dim mapping2 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第二列", "第二列")
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    Copy.ColumnMappings.Add(mapping1)
    Copy.ColumnMappings.Add(mapping2)
    copy.DestinationTableName = "表D" '指定服务器上目标表的名称
    copy.WriteToServer(DataTables("表D").basetable)   '你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  '提交事务
    msgbox("OK")
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

[此贴子已经被作者于2016/4/28 23:47:17编辑过]
3楼
大红袍 发表于:2016/4/28 23:48:00
 mark ODBC
4楼
凡夫俗子 发表于:2016/4/29 0:11:00
谢谢这么晚了还在工作

5楼
凡夫俗子 发表于:2016/4/29 0:17:00
建议论坛开通打赏功能


6楼
blackzhu 发表于:2016/4/29 8:47:00
这个能加上条件吗?  是不是后台数据存在就更新,不存在就插入的?
7楼
blackzhu 发表于:2016/4/29 8:58:00
SqlBulkCopy 这个是不是用于插入?
SqlDataAdapter  这个是用于更新?
8楼
Hyphen 发表于:2016/4/29 9:09:00
顾名思义,BulkCopy,就是批量复制的意思,只适合批量新增数据

设置一下BatchSize,性能会更上一层,BatchSize一般在500~1000之间,性能相对可靠一点
Dim tran As System.Data.SqlClient.SqlTransaction
try
    Dim conn As new System.Data.SqlClient.SqlConnection("server=voyo;uid=sa;pwd=hailun.;database=Test")
    conn.Open() '打开链接
    tran = conn.BeginTransaction()
    Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第一列", "第一列")
    Dim mapping2 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第二列", "第二列")
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    Copy.ColumnMappings.Add(mapping1)
    Copy.ColumnMappings.Add(mapping2)
    copy.DestinationTableName = "表D" '指定服务器上目标表的名称
    copy.BatchSize = 1000
    copy.WriteToServer(DataTables("表D").basetable)   '你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  '提交事务
    msgbox("OK")
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

9楼
大红袍 发表于:2016/4/29 9:15:00
以下是引用blackzhu在2016/4/29 8:58:00的发言:
SqlBulkCopy 这个是不是用于插入?
SqlDataAdapter  这个是用于更新?

 

大量数据的时候,用这个 SqlBulkCopy

 

少量数据的更新,可以用 SqlDataAdapter 

10楼
blackzhu 发表于:2016/4/29 9:22:00
我刚才测试了一下:

Dim tran As System.Data.SqlClient.SqlTransaction
try
   Dim conn As new System.Data.SqlClient.SqlConnection("****************************")
    conn.Open() '打开链接
    tran = conn.BeginTransaction()
    Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("员工编号", "员工编号")
    Dim mapping2 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("姓名", "姓名")
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    Copy.ColumnMappings.Add(mapping1)
    Copy.ColumnMappings.Add(mapping2)
    copy.Destinati
    copy.WriteToServer(DataTables("用户登录").basetable)   '你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  '提交事务
    msgbox("OK")
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

用户编号没有写入,只写入了姓名,像这个我如何来排除后台已经存在的用户编号以及姓名? 是不是只适合大量数据的导入后的写入?
[此贴子已经被作者于2016/4/29 9:23:37编辑过]
共31 条记录, 每页显示 10 条, 页签: [1] [2][3][4]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .06641 s, 2 queries.