我试图在vb.net中将数据插入到我先前创建的sqlite数据库中:
Using objConn As New SQLiteConnection(/my path to file is here/)
Using objCommand As SQLiteCommand = objConn.CreateCommand()
objConn.Open()
objCommand.CommandText = "INSERT INTO users (username , password ) VALUES ( " + usernamevar + ", " + passwordvar + " )"
objCommand.ExecuteNonQuery()
MessageBox.Show("User created successfully")
End Using
End Using
Usernamevar和passwordvar是我传递给上面子栏中的值。
但是,我收到一条错误消息:
System.Data.SQLite.SQLiteException:'SQLite错误,无此列:aa
在变量Usernamevar下传递字符串“ aa”。
我意识到我必须在插入短语中的某个地方出现语法错误,因为我可以成功地将字符串或数字插入数据库中,但是我想插入变量。有谁知道如何修理它?谢谢。
答案 0 :(得分:1)
您可以在2个字符串变量周围添加单引号,或者您可以学习使用参数,从而避免这些细节并保护数据库。
objCommand.CommandText = "INSERT INTO users (username , password ) VALUES ( '" + UserNameVar + "', '" + Passwordvar + "' )"
更简便更好的方法
Private Sub InsertUser(UserNameVar As String, Passwordvar As String)
Using objConn As New SQLiteConnection("My path To file Is here")
Using objCommand As SQLiteCommand = objConn.CreateCommand()
objCommand.CommandText = "INSERT INTO users (username , password ) VALUES (@UserName @Password);"
objCommand.Parameters.Add("@UserName", DbType.String).Value = UserNameVar
objCommand.Parameters.Add("@Password", DbType.String).Value = Passwordvar
objConn.Open()
objCommand.ExecuteNonQuery()
MessageBox.Show("User created successfully")
End Using
End Using
End Sub
我不敢相信我会用.AddWithValue
来提供答案,但是我似乎找不到其他可以将数据类型添加到方法中的方法。我猜想SQLite中类型的广泛实现使它变得无关紧要。
编辑 更改为.Add方法,该方法允许我指定数据类型。感谢@WelcomeOverflow向我展示方法。