#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 — вероятно, это задавалось раньше).