以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  狐表SQL数据库 可以使用SqlBulkCopy么?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109019)

--  作者:李小胖
--  发布时间:2017/11/2 18:28:00
--  狐表SQL数据库 可以使用SqlBulkCopy么?
如果能 麻烦些个范本?  我要一次性插入上千条数据.每条数据只修改其中一个字段
--  作者:有点甜
--  发布时间:2017/11/2 19:42:00
--  

1、你要插入还是修改数据?插入数据,是新增一行;修改数据,是修改本来已经存在的数据。

 

2、SqlBulkCopy是用来新增数据的,不是用来修改数据的。


--  作者:有点甜
--  发布时间:2017/11/2 19:43:00
--  

 或者,你看看

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=98689&skin=0

 


--  作者:李小胖
--  发布时间:2017/11/3 8:41:00
--  
以下是引用有点甜在2017/11/2 19:42:00的发言:

1、你要插入还是修改数据?插入数据,是新增一行;修改数据,是修改本来已经存在的数据。

 

2、SqlBulkCopy是用来新增数据的,不是用来修改数据的。

我就是用来新增数据的,新增的行.其中只有一个字段数据不一样,其他都一样


--  作者:有点甜
--  发布时间:2017/11/3 8:45:00
--  
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

--  作者:李小胖
--  发布时间:2017/11/3 10:03:00
--  
以下是引用有点甜在2017/11/3 8:45:00的发言:
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

老师 您写得太深奥 没看明白Dim mapping1 As new System.Data.SqlClient.SqlBulkCopyColumnMapping("第一列", "第一列") \'改为自己的列名,有多少列就增加多少个


实例 如下
    字段1  行为      字段2 时间        
                    吃饭                2017.11.3
                    吃饭                2017.11.4
                    吃饭                 2017.11.5
存储速度越快越好
这样的字段来一千条, 存储到 SQL 服务器上去..老师能帮忙写下实例么?   字段2 时间  每行增加1天

[此贴子已经被作者于2017/11/3 10:07:52编辑过]

--  作者:李小胖
--  发布时间:2017/11/3 10:43:00
--  
Dim conn As new System.Data.SqlClient.SqlConnection("server=voyo;uid=sa;pwd=hailun.;database=Test") \'改为自己数据库的连接字符串

连接字符串怎么转换啊?
不能直接用狐表的连接字符串么?
我的字符串如下,请帮忙转换下

Provider=SQLOLEDB.1;Password=123d;Persist Security Info=True;User ID=456;Initial Catalog=789;Data Source=110.110.110.110,14399

--  作者:有点蓝
--  发布时间:2017/11/3 11:53:00
--  
Dim conn As new System.Data.SqlClient.SqlConnection("server=110.110.110.110,14399;uid=456;pwd=123d.;database=789")
--  作者:bahamute
--  发布时间:2018/8/21 9:35:00
--  
好办法,顶啊,保存一万多条数据瞬间完成。
--  作者:xiangwei_zeng
--  发布时间:2019/1/2 8:39:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:错误提示.png
图片点击可在新窗口打开查看

Dim tran As System.Data.SqlClient.SqlTransaction
try
    Dim conn As new System.Data.SqlClient.SqlConnection("Provider=SQLOLEDB.1;Password=cwsa;Persist Security Info=True;User ID=sa;Initial Catalog=K3cx2016;Data Source=cwserver2017") \'改为自己数据库的连接字符串
    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("PEBS外购投料").basetable)   \'你的datatable名字,执行把DataTable中的数据写入DB
    tran.Commit()                                  \'提交事务
    msgbox("OK")
catch ex As exception
    msgbox(ex.message)
    tran.Rollback()    \'返回False 执行失败!
End try

参考并修改了代码,但提示这个错误,请问是我哪里还没有注意到?