Я создал приложение форм Windows, которое подключается к локально созданному SQLite db. Это довольно простое приложение, которое в основном делает выбор и вставка в базу данных. У меня был класс, который проверял, существует ли такая база данных, а если нет, она ее создала. Я также добавил некоторые методы для выполнения запросов и т. Д.Перенос приложения форм SQLite для приложений Windows (C#)
Теперь в окнах формы (или в консоли приложения) соединение было довольно просто:
SQLiteConnection conn = new SQLiteConnection("Data Source=sampleDB.sqlite;Version=3;");
conn.Open();
//Assume that i created table Person(int ID, string NAME)
string sql = "select * from Person";
SQLiteCommand command = new SQLiteCommand(sql, conn);
SQLiteDataReader reader = command.ExecuteReader();
while(reader.Read()){
Console.WriteLine(reader["ID"] + " | " + reader["NAME"]);
}
conn.Close();
Теперь я попытался мигрировать мое приложение из Windows Forms для Универсальный приложений Windows. Первое, что я сделал, я увидел, что System.Data.SQLite.dll не действует для такого приложения, и поэтому я установил SQLite для универсальной платформы Windows вместе с SQLite.Net-PCL
Но проблема в том, что я не знаю, как передавать запросы в виде строки, как это было раньше. Все, что я столкнулся в том, что я должен был создать класс Person с Id и имя в качестве атрибутов, а затем написать что-то вроде этого:
SQLitePlatformWinRT sqlitePlatform = new SQLitePlatformWinRT();
var db = new SQLiteConnection(sqlitePlatform, "sampleDB.sqlite");
db.CreateTable<Person>();
db.Insert(new Person(ID_PERSON, NAME_PERSON));
Есть ли способ, чтобы использовать старый способ (как в Windows Forms) в Универсальное приложение Windows? IE:
//Instead of using this:
db.Insert(new Person(ID_PERSON, NAME_PERSON));
//I want to use this:
SQLiteCommand command = new SQLiteCommand("insert into Person ...", conn);
command.ExecuteNonQuery();
Не могли бы вы также добавить часть TODO, как бы вы могли использовать, скажем, атрибут Name из таблицы Person? –
т. Е. До того, как я использовал читатель [«Имя»], чтобы получить этот атрибут. Как его использовать сейчас? –
@MihaJamsek Чтобы прочитать записи, возвращаемые запросом, нам нужно выполнить итерацию по строкам таким образом, чтобы это было похоже на [SqlDataReader] (https://msdn.microsoft.com/en-us/library/system.data. sqlclient.sqldatareader (v = vs.110) .aspx) Класс. Здесь мы можем получить значение указанного столбца либо по порядку столбца, либо по имени столбца. Поскольку этот метод получает результат типа «Object», вам может потребоваться передать его в реальный тип столбца. Например, см. Мой обновленный ответ. –