Я пытаюсь получить простую базу данных SQLite. Я использую официальное расширение SQLite для C#, и я использую DataGrip от IntelliJ, чтобы проверить, есть ли данные, но моя программа C# не дает никаких результатов.SQLite query возвращает строки
Это код, который выполняет запрос:
SQLiteConnection connection = new SQLiteConnection(DbDsn);
User user = new User();
using (connection)
{
connection.Open();
string sql = "SELECT * FROM user WHERE username = @username ;";
SQLiteCommand command = new SQLiteCommand(sql, connection);
command.Prepare();
command.Parameters.AddWithValue("@username", username);
SQLiteDataReader reader = command.ExecuteReader();
if (reader.Read())
{
user.Id = (int) reader["id"];
user.Username = reader["username"] as string;
user.Password = reader["password"] as string;
user.Name = reader["name"] as string;
user.LastName = reader["last_name"] as string;
user.Type = (UserTypes) reader["type"];
}
else
{
throw new ObjectNotFoundException();
}
connection.Close();
}
И это результат простого Select * From user;
запроса на столе пользователя (сделано на DataGrip):
id username passw… name last_name type
1 managertest oAWpW… BENJAMIN ARIEL NAVA MARTINEZ 1
2 clerktest iRYMz… EMPLEADO PRUEBA 0
Как вы можете (я проверял, что запрос выполняется в одном и том же файле), однако программа C# пропускает оператор if
(потому что чтение возвращает false
), как если бы в строке не было строк базы данных, что такое проблема?
добавить command.Prepare(); после команды.Parameters.AddWithValue ("@ username", имя пользователя); – RajSharma