System.Data.SQLite.SQLiteException: «Ошибка SQLite, нет такого столбца: aa» - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь вставить данные в свою базу данных sqlite, которую я ранее создал, в vb.net:

    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 Ответ

0 голосов
/ 10 декабря 2018

Вы можете добавить одинарные кавычки вокруг двух строковых переменных или научиться использовать параметры, которые избавят вас от этих деталей и защитят вашу базу данных.

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 за указание пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...