0

私はこのコードを持っていますが、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()

誰かが答えを持っていることを願っています、ありがとう

4

1 に答える 1

1

2番目の選択でレコードが重複している可能性があります。その場合、解決策はのUNION ALL代わりにを使用することですUNION

UNION ALL演算子を使用して作成された複合SELECTは、SELECTからのすべての行をUNION ALL演算子の左側に返し、SELECTからのすべての行をその右側に返します。UNION演算子は、重複する行が最終結果セットから削除されることを除いて、UNIONALLと同じように機能します。

参照:http ://www.sqlite.org/lang_select.html

そうでない場合は、SQLをトレースSELECTし、sqliteクライアントでパーツを直接実行することをお勧めします。

アップデート

コメントによると、コードに加える変更は次のとおりです。

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) & "'"
于 2012-06-02T17:14:58.737 に答える