首页 文章

System.Data.SQLite.SQLiteException:'SQLite error no such column: aa'

提问于
浏览
0

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

“aa”是在变量Usernamevar下传递的字符串 .

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

1 回答

  • 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中广泛的类型实现使它有点无关紧要 .

    EDIT 已更改为允许我提供数据类型的.Add方法 . 感谢@ WelcomeOverflow给我指路 .

相关问题