Foxtable(狐表)用户栏目专家坐堂 → 事务处理


  共有3520人关注过本帖树形打印复制链接

主题:事务处理

帅哥哟,离线,有人找我吗?
zhenghangbo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:477 积分:4569 威望:0 精华:0 注册:2018/2/7 14:30:00
事务处理  发帖心情 Post By:2020/3/13 9:40:00 [只看该作者]

Dim tran As System.Data.SqlClient.SqlTransaction
try
    Dim conn As new System.Data.SqlClient.SqlConnection("server=127.0.0.1;uid=sa;pwd=xxxxx;database=qgrjmd")  '数据库安装在本机
    conn.Open() '打开链接
    tran = conn.BeginTransaction()
    Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("出发日期", "出发日期")
    Dim mapping2 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第2列", "第2列")
    Dim mapping3 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第3列", "第3列")
    Dim mapping4 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第4列"", "第4列")
    Dim mapping5 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第5列""第5列")
   
    Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
    Copy.ColumnMappings.Add(mapping1)
    Copy.ColumnMappings.Add(mapping2)
    Copy.ColumnMappings.Add(mapping3)
    Copy.ColumnMappings.Add(mapping4)
    Copy.ColumnMappings.Add(mapping5)
   
    copy.Destinati  '指定服务器上目标表的名称
    copy.BatchSize = 1000
    copy.WriteToServer(DataTables("cglk").basetable)   '你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  '提交事务
    msgbox("OK")
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    '返回False 执行失败!
End try

问题
1:copy.WriteToServer(DataTables("cglk").basetable)   这句是直接这样写码,后面的.basetable是什么意思?
2:执行通过,弹窗OK。为什么我的sqlserver2008数据cglk表里面数据一个都没有写入?
[此贴子已经被作者于2020/3/13 9:42:59编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/13 10:33:00 [只看该作者]

1、这个是.net的用法,所以需要传入.net的System.Data.DataTable对象http://www.foxtable.com/webhelp/topics/1939.htm

2、表格有新增的数据吗,SqlBulkCopy是来批量新增的

 回到顶部
帅哥哟,离线,有人找我吗?
zhenghangbo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:477 积分:4569 威望:0 精华:0 注册:2018/2/7 14:30:00
  发帖心情 Post By:2020/3/13 11:45:00 [只看该作者]

表格是外部导入的excel,全都都是新增数据啊。先把excel导入狐表的外部表cglk表,然后保存到sqlserver2008数据库中,excel数据量在10万条。
[此贴子已经被作者于2020/3/13 11:51:03编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/13 11:57:00 [只看该作者]

表格的列名和数据库表的列名是否都对应上

 回到顶部
帅哥哟,离线,有人找我吗?
zhenghangbo
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:477 积分:4569 威望:0 精华:0 注册:2018/2/7 14:30:00
  发帖心情 Post By:2020/3/13 20:28:00 [只看该作者]

要保存的列都对应上了。所有列都要写上吗,有些列不想保存可以不写吗?没有写_Identify列可以吗?
至少我上传的那代码中的列应该保存上吧

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/13 20:44:00 [只看该作者]

只写需要保存的列即可。我测试没有问题。是不是BeforeConnectOuterDataSource连接到其它数据库了

 回到顶部
帅哥哟,离线,有人找我吗?
zhenghangbo
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:477 积分:4569 威望:0 精华:0 注册:2018/2/7 14:30:00
  发帖心情 Post By:2020/3/14 17:28:00 [只看该作者]

我是在命令窗口执行代码的,代码中已经有写要链接的数据库了啊,为什么要BeforeConnectOuterDataSource?

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110744 积分:563646 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/14 17:39:00 [只看该作者]

看来还不知道BeforeConnectOuterDataSource是干嘛用的,如果没有改变数据库链接,那就不用管这个了。请上传具体实例测试
[此贴子已经被作者于2020/3/14 17:39:47编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zhenghangbo
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:477 积分:4569 威望:0 精华:0 注册:2018/2/7 14:30:00
  发帖心情 Post By:2020/3/15 8:41:00 [只看该作者]

我在外部数据源中已经设置了sql的数据源了,外部表也已经引入了,为什么还要在项目事件的BeforeConnectOuterDataSource设置?这不是重复了吗?
搞不懂,我新建了一个项目一模一样的测试可以
[此贴子已经被作者于2020/3/15 9:01:05编辑过]

 回到顶部