このコードでエラーが発生し、完全に困惑しています。ヘルプ、アイデア、提案をいただければ幸いです。
次のコードが配置されています。
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 がエリアを持つフォーラムを知っている人はいますか?