Я просто хочу получить идентификатор записи БД, выполнив поиск по имени пользователя.
protected void cmdSearch_Click(object sender, EventArgs e)
{
string connStr = @"Data Source=D:\DB-Files\sqlite.db; Version=3;";
SQLiteConnection sqlCon = new SQLiteConnection(connStr);
SQLiteCommand sqlCom = new SQLiteCommand("SELECT ID FROM TableTest WHERE UserName = @UserName", sqlCon);
sqlCom.Parameters.AddWithValue("@Username", txtUsername.Text);
sqlCon.Open();
int rows = sqlCom.ExecuteNonQuery();
sqlCon.Close();
lblUserFound.Text = rows.ToString();
}
что бы я ни пытался, это всегда терпит неудачу; с помощью Visual Studio C# и SQLite версии 3; запрос в DB-Manager для SQLite выдает положительный результат
ExecuteNonQuery - неправильный метод, так как запрос SELECT является. Вам нужно заполнить таблицу данных или использовать устройство чтения данных. И вы не должны использовать AddWithValue с SQLIte.
Кроме того, @UserName против @Username, вероятно, является проблемой. Почти уверен, что именованные параметры чувствительны к регистру.





Вы используете неправильный метод для получения данных. Эта строка неверна:
int rows = sqlCom.ExecuteNonQuery();
ExecuteNonQuery возвращает только значение, указывающее, был ли запрос выполнен нормально или нет. Поскольку вы ожидаете только один результат, вы можете использовать ExecuteScalar. Попробуй это:
int rows = Convert.ToInt32(sqlCom.ExecuteScalar());
нет исключений, результат всегда -1 (для затронутых строк) ---> ну, я имею в виду, строки не возвращаются (редактировать)