sqlite vb.net从datatable在一个命令中多插入

sqlite vb.net从datatable在一个命令中多插入,vb.net,sqlite,datatable,Vb.net,Sqlite,Datatable,我有这个代码,但它只插入54条记录中的7条。 我确信数据表中的记录很好 Dim dt As DataTable Dim sc As SQLiteCommand Dim Script As String = Nothing Dim Script2 As String = Nothing Dim Script3 As String = Nothing Script = "insert into paperdate(dtime,papernum,paperstat,user) select " &am

我有这个代码,但它只插入54条记录中的7条。 我确信数据表中的记录很好

Dim dt As DataTable
Dim sc As SQLiteCommand
Dim Script As String = Nothing
Dim Script2 As String = Nothing
Dim Script3 As String = Nothing
Script = "insert into paperdate(dtime,papernum,paperstat,user) select " & "'" & dt.Rows(0)(0) & "'" & " as " & "dtime" & "," & dt.Rows(0)(1) & " as " & "papernum" & "," & "'" & dt.Rows(0)(2) & "'" & " as " & "paperstat" & "," & "'" & dt.Rows(0)(3) & "'" & " as " & "user"
For i As Integer = 1 To dt.Rows.Count - 1
Script2 = " union select " & "'" & dt.Rows(i)(0) & "'" & "," & dt.Rows(i)(1) & "," & "'" & dt.Rows(i)(2) & "'" & "," & "'" & dt.Rows(i)(3) & "'"
Script3 = Script3 & Script2
Next
sc = New SQLiteCommand(Script & Script3, mycon)
sc.ExecuteNonQuery()
sc.Dispose()
我希望有人能找到答案,
谢谢

第二次选择中可能有重复记录。如果是这种情况,那么解决方案是使用
UNION ALL
而不是
UNION

使用UNION ALL运算符创建的复合选择返回所有 从“选择”到“全部联合”操作符左侧的行,以及 从“选择”到其右侧的行。工会接线员工作 与UNION ALL的方式相同,只是从中删除重复的行 最终结果集

参考:

如果不是这样,那么您可能希望跟踪SQL,并直接在sqlite客户端中运行
SELECT
部分

更新

根据您的评论,以下是您对代码所做的更改:

Script2 = " union select " & "'" & dt.Rows(i)(0) & "'" & "," & dt.Rows(i)(1) & "," & "'" & dt.Rows(i)(2) & "'" & "," & "'" & dt.Rows(i)(3) & "'"
变成

Script2 = " union all select " & "'" & dt.Rows(i)(0) & "'" & "," & dt.Rows(i)(1) & "," & "'" & dt.Rows(i)(2) & "'" & "," & "'" & dt.Rows(i)(3) & "'"

好的,是的,我有这么多重复的记录,因为它没有主键,你能更新我的代码你想说什么,只是想确定一下。thanks@XenKid:当然,我按照你的要求补充了我的答案。