System.Data.SQLite.SQLiteException:'SQLite错误,无此列:aa'

时间:2018-12-09 16:39:00

标签: vb.net sqlite

我试图在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”。

我意识到我必须在插入短语中的某个地方出现语法错误,因为我可以成功地将字符串或数字插入数据库中,但是我想插入变量。有谁知道如何修理它?谢谢。

1 个答案:

答案 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向我展示方法。