1

このコードでエラーが発生し、完全に困惑しています。ヘルプ、アイデア、提案をいただければ幸いです。

次のコードが配置されています。

   Sub addauthorsearch(ByVal objconn As SQLiteConnection, ByVal author As String, ByVal searchname As String)
        Dim myTrans As SQLiteTransaction
        Dim objCommand As SQLiteCommand
        Dim authorid As Integer
        myTrans = objconn.BeginTransaction
<< snipped  authorid is retrieved in here>>
       objCommand = objconn.CreateCommand()
        'objCommand.CommandText = "INSERT INTO [authorsearch] ([searchid],[authorid] ) VALUES ('" & searchname & "', '" & authorid  & "');"
        objCommand.CommandText = "INSERT INTO [authorsearch] ([searchid],[authorid] ) VALUES (@name, @id);"
        objCommand.Parameters.Clear()
        objCommand.Parameters.Add(New SQLiteParameter("@name", searchname))  ' * error occurs here
        objCommand.Parameters.Add(New SQLiteParameter("@id", authorid))

        Try
            objCommand.ExecuteNonQuery()
        Catch ex As InvalidOperationException
            MessageBox.Show("An error has occurred: " & ex.Message)
        Catch ex As SQLiteException
            MessageBox.Show("An error has occurred: " & ex.Message)

        End Try
        myTrans.Commit()

データベースは(作成時に)次のように定義されます

CREATE TABLE authorsearch 
    (searchid VARCHAR (150) NOT NULL UNIQUE, 
     authorid INTEGER REFERENCES author (authorid))

返されるエラーはです。InvalidCastException具体的には、文字列 "a-itmatov, chingiz" から型への変換Integerが無効です。 searchIDとして定義されておりvchar、何かがそれを整数に変換しようとする理由がわかりません。パラメーター化されていないステートメントは機能しますが、明らかな理由により、単一引用符 (たとえば O'Neil) を含む名前では失敗します。

任意の提案をいただければ幸いです。

関連する質問では、明らかに C# コードの翻訳が役立ちます。sqlite と c# が議論されているフォーラムがいくつかありますが、VB.NET と sqlite がエリアを持つフォーラムを知っている人はいますか?

4

0 に答える 0