以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于快速保存代码的疑问  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175650)

--  作者:rogen
--  发布时间: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

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

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

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

麻烦蓝版打个样


--  作者:有点蓝
--  发布时间: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