/ / Migrácia formulárov Windows SQLite do univerzálnej aplikácie Windows (C #) - c #, winforms, sqlite, windows-10-universal

Migrovať aplikácie SQLite formulárov okien na univerzálnu aplikáciu systému Windows (C #) - c #, winforms, sqlite, windows-10-universal

Vytvoril som aplikáciu pre formuláre systému Windows, ku ktorej sa pripájalokálne vytvorené SQLite db. Je to celkom jednoduchá aplikácia, ktorá hlavne vyberá a vkladá do databázy. Mal som triedu, ktorá skontrolovala, či takáto databáza existuje, a ak nie, vytvorila ju. Pridal som aj niekoľko metód na vykonávanie otázok a podobne.

Teraz bolo vo formátoch Windows (alebo v aplikácii konzoly) pripojenie veľmi jednoduché:

    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();

Teraz som sa pokúsil migrovať svoju aplikáciu z Windows Forms na Univerzálna aplikácia pre Windows, Prvá vec, ktorú som urobil, som to videl System.Data.SQLite.dll nie je pre takúto aplikáciu platná, a preto som nainštaloval SQLite pre platformu Universal Windows, spolu s SQLite.Net-PCL

Problém je však v tom, že neviemposielať dotazy rovnako ako predtým. Stretol som sa len s tým, že som musel vytvoriť triedu Osoba s ID a menom ako atribúty a potom napísať niečo také:

    SQLitePlatformWinRT sqlitePlatform = new SQLitePlatformWinRT();
var db = new SQLiteConnection(sqlitePlatform, "sampleDB.sqlite");
db.CreateTable<Person>();

db.Insert(new Person(ID_PERSON, NAME_PERSON));

Existuje nejaký spôsob, ako používať starú cestu (ako vo formách Windows) v aplikácii Universal 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();

odpovede:

0 pre odpoveď č. 1

Jedným z možných spôsobov je použitie Prenosná knižnica tried pre SQLite, ktorý podporuje reťazec Sql Query String, aký ste použili vo Windows Forms. Túto knižnicu môžeme použiť namiesto SQLite.Net-PCL.

Ak chcete túto knižnicu používať, môžeme ju nainštalovať do formulára nugety a potom to použite nasledovne:

using (var connection = new SQLitePCL.SQLiteConnection("sampleDB.sqlite"))
{
using (var statement = connection.Prepare(@"select * from Person"))
{
while (statement.Step() == SQLitePCL.SQLiteResult.ROW)
{
//TODO. For example
//Gets the value of the specified column by the column name.
var Id = (long)(statement["Id"]);
var Name = (string)statement["Name"];

//Gets the value of the specified column by the column ordinal.
//var Id = (long)(statement[0]);
//var Name = (string)statement[1];
}
}
}

Viac informácií nájdete v tomto blogu: Nová knižnica prenosných tried pre SQLite, Tento článok síce platí pre systém Windows 8.1, ale vzťahuje sa aj na aplikácie UWP.