Foxtable(狐表)用户栏目专家坐堂 → 关于快速保存代码的疑问


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

主题:关于快速保存代码的疑问

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


加好友 发短信
等级:二尾狐 帖子:588 积分:4838 威望:0 精华:0 注册:2015/11/22 10:28:00
关于快速保存代码的疑问  发帖心情 Post By:2022/3/14 9:15:00 [只看该作者]

论坛找到这么一个快速保存至mssql的代码
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.Destinati '指定服务器上目标表的名称
    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

我的疑问是:若数据表的字段很多,几十个的话,那红色部分不得写几十行啊
有啥方法能简化不,最好是能整合成一个函数,往里面传参,就方便了。

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


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

使用数组遍历呀,比如这种:http://www.foxtable.com/webhelp/topics/1533.htm

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


加好友 发短信
等级:二尾狐 帖子:588 积分:4838 威望:0 精华:0 注册:2015/11/22 10:28:00
  发帖心情 Post By:2022/3/14 9:57:00 [只看该作者]

以下是引用有点蓝在2022/3/14 9:44:00的发言:
使用数组遍历呀,比如这种:http://www.foxtable.com/webhelp/topics/1533.htm

我知道是用循环,只是不知这个循环应该怎么写,要把哪些语句包在循环体内

麻烦蓝版打个样


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


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

所以提问请尽量把问题一次描述清楚

Dim 
Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim 
Cols2() As String = {"接收列一","接收列二","接收列三"}
Dim copy As new System.Data.SqlClient.SqlBulkCopy(conn, System.Data.SqlClient.SqlBulkCopyOptions.Default, tran)
for i as integer =0 to cols.length - 1
Copy.ColumnMappings.Add(new System.Data.SqlClient.SqlBulkCopyColumnMapping(Cols1(i),Cols2(i)))
next

 回到顶部