Как присвоить переменную результату запроса

#vb.net #sqlite

#vb.net #sqlite

Вопрос:

Как мне присвоить результат запроса переменной.

Я использую SQLLite. Ниже приведен код для получения пароля из таблицы User. Мне нужно сравнить указанный пароль и данный пароль.

     Dim i As String
    Dim p As String
    i = txtUserID.Text
    p = txtPassword.Text

    Try
        Dim sqlConnection As New SQLite.SQLiteConnection()
        Dim sqlCommand As New SQLiteCommand("", sqlConnection)
        Dim sqlPath As String = "Data Source=" amp; Application.StartupPath amp; "DatabaseSimpleDB.db3"
        Dim sqlQuery As String = "SELECT Password FROM User WHERE UserID LIKE '" amp; i amp; "'"
        sqlConnection.ConnectionString = sqlPath
        sqlConnection.Open()
        sqlCommand.CommandText = sqlQuery
        sqlCommand.ExecuteNonQuery()
        sqlConnection.Close()
    Catch ex As Exception
        MsgBox("Invalid ID or Password. Please try again.")
    End Try
  

Правка 1:

В приведенном ниже коде почему мне нужно использовать GetInt16(0). Почему 16 и почему 0 в параметре. В чем разница между GetInt32(), GetInt16() и getString()

 DbDataReader reader = command.ExecuteReader();

while (reader.Read())
{
    int id=  reader.GetInt16(0);
}
reader.Close();
  

Ответ №1:

Прежде всего, вы используете sqlCommand.ExecuteNonQuery() — это вернет только номер затронутой строки.

Используйте другой метод — что-нибудь, что вернет результаты, например:

 sqlCommand.ExecuteReader()
  

Вам нужно присвоить возвращаемое значение this переменной типа DbDataReader (или, скорее, SqlDataReader , которая наследуется от нее).

Это даст вам SqlDataReader , над которым вы можете выполнять итерации для извлечения значений.

Комментарии:

1. @Failed_Noob — Сэр, как насчет того, чтобы перейти по ссылкам, которые я предоставил, прочитать документацию (в которой есть примеры) и учиться самостоятельно?

2. DbDataReader reader = команда. ExecuteReader(); ` while (reader.Read()) { идентификатор int= reader. GetInt16(0); } считыватель. Close();` В этом случае почему нам нужно указать это как GetInt16(0)

3. @Failed_Noob — Почему вы спрашиваете в качестве комментария к моему ответу? Задайте новый вопрос (не перед поиском в остальной части StackOverflow — вероятно, это задавалось раньше).