2016-06-06 2 views
1

Я пытаюсь получить простую базу данных 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), как если бы в строке не было строк базы данных, что такое проблема?

+0

добавить command.Prepare(); после команды.Parameters.AddWithValue ("@ username", имя пользователя); – RajSharma

ответ

0

Вызов SQLiteCommand.PrepareПОСЛЕ завершения построения вашей команды

//... 
string sql = "SELECT * FROM user WHERE username = @username ;"; 
SQLiteCommand command = new SQLiteCommand(sql, connection); 
command.Parameters.AddWithValue("@username", username); 
// Call Prepare after setting the Commandtext and Parameters. 
command.Prepare(); 

SQLiteDataReader reader = command.ExecuteReader(); 
//... 
Смежные вопросы