Я делаю программное обеспечение для управления библиотекой.У меня есть метод, который получает информацию о книге:
public static Book GetInfoAboutBook(string title)
{
using (SqliteConnection db = new SqliteConnection("Filename=" + fileName))
{
db.Open();
Book b = new Book();
SqliteCommand sqliteCommand = new SqliteCommand
{
Connection = db,
CommandText = "select Title, Author, Publisher, ISBN, Quantity, CoverImageLocation, Tags from MyBooks where Title = '@Title'",
};
sqliteCommand.Parameters.AddWithValue("@Title", title);
SqliteDataReader query = sqliteCommand.ExecuteReader();
if(query.Read())
{
b.Title = query.GetString(0);
b.Author = query.GetString(1);
b.Publisher = query.GetString(2);
b.Quantity = query.GetInt32(3);
b.CoverImageLocation = query.GetString(4);
b.Tags = query.GetString(5);
}
return b;
}
}
'b' никогда не инициализируется независимо от ввода.Я убедился, что все входные данные действительно присутствуют в базе данных.Но это не работает.Я отлаживал в этой функции.query.Read () никогда не бывает успешным.Вот как объект книги остается нулевым.Это класс Книги:
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public string Publisher { get; set; }
public string ISBN { get; set; }
public int Quantity { get; set; }
public string CoverImageLocation { get; set; }
public string Tags { get; set; }
}
Примечание: Название гарантированно будет уникальным.
Это схема базы данных:
CREATE TABLE MyBooks (текст заголовка Первичный ключ, текст автора не ноль, текст издателя не ноль, текст ISBN не ноль, количество int неNULL, текст CoverImageLocation не равен NULL, текст тэгов не равен NULL;