1

sqlite3 データベースへの挿入中に、「制約違反の列 transid が一意ではないため、中止します」というエラーが発生しました。これが私のコードです。誰か助けてくれませんか?

Public Connection As SQLiteConnection
Public Function Getconnection() As SQLiteConnection
    Connection = New SQLiteConnection
    Connection.ConnectionString = "Data Source=" + Application.StartupPath + "\POS.s3db; Version=3;"
    Connection.Open()
    GetConnection = Connection
End Function

Using cmd As New SQLiteCommand(strSQL,Connection)
            cmd.CommandType = CommandType.Text
            strSQL = "insert into tbltrans2 (transid,itemcode,flddate,itemname,qty,price,total,btw,btwper) values ('@tid',@itemcode,'@date','@itemname','@qty','@price','@total','@btw',@btwper)"
            cmd.Parameters.AddWithValue("tid", txtTransId.Text)
            cmd.Parameters.AddWithValue("date", txtDate.Text)
            ''this is temp

            For Each ls As ListViewItem In ListItems.Items
                cmd.Parameters.AddWithValue("itemcode", ls.Tag)
                cmd.Parameters.AddWithValue("itemname", ls.SubItems(0).Text)
                cmd.Parameters.AddWithValue("qty", ls.SubItems(1).Text)
                cmd.Parameters.AddWithValue("price", ls.SubItems(2).Text)
                cmd.Parameters.AddWithValue("total", ls.SubItems(3).Text)
                cmd.Parameters.AddWithValue("btw", (Double.Parse(ls.SubItems(5).Text) / 100) * (Double.Parse(ls.SubItems(3).Text)).ToString("#,##0.00"))
                cmd.Parameters.AddWithValue("btwper", Double.Parse(ls.SubItems(5).Text))
                cmd.ExecuteNonQuery()
            Next ls
        End Using
4

1 に答える 1

1

uniqueに制約があるようtransidです。つまりtransid、テーブルに既に存在する行を挿入することはできません。

別の を入力するか、自動インクリメント列としてtransid設定してみてください。入力する必要はまったくありません。transid

于 2012-11-25T10:57:48.630 に答える