Бд sqlite для доступу до додатка metro windows 8.

У превью версії Windows 8, немає прямого шляху до доступу щодо Бази даних (SQL Server, SQLCE) в стилі Метро, ми можемо використовувати тільки локальне храніліще.Но все ми знаємо, що, є доступ до XML- і чому ми повинні будувати з нуля, коли у нас там багато локальних реляційних баз даних, таких як, наприклад, VistaDb, Sqlite, SqlCE.

На щастя, є одна бібліотека opensource, яка допоможе нам отримати доступ до sqlite, яка називається sqlite-winrt на веб-сайті CodePlex. Sqlite-winrt допоможе нам створити і отримати доступ до бази даних MySQL, яка зберігається в наших локальних сховищах даних, і ми можемо легко відновити або зберегти даних в БД sqlite, шляхом виконання SQL.

Ми засмучені приклад для демонстрації того, як можна побудувати Metro додаток, яке буде доступно через sqlite. Наше додаток буде створено для зберігання і доступу до особистих зібрань книг. Наша база даних буде мати дві таблиці, Категорії і Книги для зберігання категорії книг і інформації про книгу.

Наші програми зможуть:

  1. Показати список категорій книг
  2. Показати кожну категорію списку книг
  3. Створення нової категорії
  4. Створення нової книги

Відео: Бази даних SQLite. Установка SQLite на Windows 10. Запуск SQLite3 на Windows

Наш інтерфейс програми:

1-Й ЕТАП: Створіть новий додаток під назвою MetroDbAccess і посилання на бібліотеку sqlite-winrt (Sqlite.winmd). Для посилання на бібліотеки C ++ wrapper, такі як sqlite-winrt, ви повинні скористатися посиланням C: Program Files (x86) Microsoft Visual Studio 11.0VCbinplatform.winmd перед посиланням на оболонку бібліотеки.

2-Й ЕТАП: Створення моделі класів

public class Категорії {public int Ідентифікатор {get- значення-} public string Name {get- значення-} public string Опис {get- значення-}} суспільний клас, Книга, {public int Ідентифікатор {get- значення-} public string Name {get- значення-} public string Автор {get- значення-} public string Опис {get- значення-} громадська Категорія {get- значення-}} class Category {public int Id {get- set-} public string Name {get - set-} public string Description {get- set-}} public class Book {public int Id {get- set-} public string Name {get- set-} public string Author {get- set-} public string Description {get - set-} public Category Category {get- set-}}


MainPageViewModel класу, який використовується для зберігання даних для Mainpage.xaml.

3 СТУПІНЬ: Змініть Mainpage.xaml

                              <Текстовое окно x:Name="CategoryNameTextBox">  <Текстовое окно x:Name="CategoryDescriptionTextBox"> кнопка зберегти      <Текстовое окно x:Name="NameTextBox">  <Текстовое окно x:Name="AuthorTextBox">  <Текстовое окно x:Name="DescriptionTextBox"> кнопка зберегти                 кнопка Init Бази даних кнопка Відновити настройки за замовчуванням, ДБ    x: Class = "MetroDbAccess.MainPage" xmlns = "https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x = "https://schemas.microsoft.com/winfx/2006/xaml "xmlns: d =" https://schemas.microsoft.com/expression/blend/2008 "xmlns: mc =" https://schemas.openxmlformats.org/markup-compatibility/2006 "mc: Ignorable =" d " d: DesignHeight = "768" d: DesignWidth = "1366">                                                             

Є деякі оброблювачі подій, які ми не створювали перш, ми будемо створювати їх в наступних кроках.

4-Й КРОК: Створення InitViewModel для створення БД sqlite, яка називається bookdb в LocalStorage, потім створюємо таблицю Категорій, якщо вона не існує, після цього, ми називаємо інструкції SQL для вилучення всіх категорій і прив`язуємо їх до управління CategoryList (управління ListView).

 приватні void InitViewModel () {SQLite.Database дБ = new SQLite.Database ( "bookdb") - / / створює файл бази даних в локальну папку app якщо (db.Ready) {var stmt = db.PrepareStatement ( "CREATE TABLE, ЯКЩО НЕ ІСНУЄ категорій (id INTEGER PRIMARY KEY, ім`я, ТЕКСТ, ТЕКСТ опису) ") - якщо (stmt.Execute ()) {// Upadate список категорій Model.Categories = new System.Collections.ObjectModel.ObservableCollection<Категория>() - stmt = db.PrepareStatement ( "ВИБЕРІТЬ ідентифікатор, ім`я, опис ВІД Категорії") - в той час як (stmt.HasMore ()) {// Заповнюємо список категорій var id = stmt.ColumnAsIntAt (0) - var catName = stmt.ColumnAsTextAt (1) - var desc = stmt.ColumnAsTextAt (2) - Model.Categories.Add (нова категорія () {Id = id, Name = catName, Опис = desc}) -}} CategoryList.ItemsSource = Model .Categories-}} private void InitViewModel () {SQLite.Database db = new SQLite.Database ( "bookdb") - // creates the database file in the local app folder if (db.Ready) {var stmt = db.PrepareStatement ( "CREATE TABLE IF NOT EXISTS Categories (id INTEGER PRIMARY KEY, name TEXT, description TEXT)") - if (stmt.Execute ()) {// Upadate the category list Model.Categories = new System.Collections.ObjectModel.ObservableCollection() - stmt = db.PrepareStatement ( "SELECT id, name, description FROM Categories") - while (stmt.HasMore ()) {// Fill the category list var id = stmt.ColumnAsIntAt (0) - var catName = stmt .ColumnAsTextAt (1) - var desc = stmt.ColumnAsTextAt (2) - Model.Categories.Add (new Category () {Id = id, Name = catName, Description = desc}) -}} CategoryList.ItemsSource = Model.Categories -}}

5 КРОК: Створення обробника подій selectionchanged для CategoryList, який називається CategoryList_Selectionchanged, цей метод дозволить нам застосувати GetBookByCategory, щоб отримати всі книги з певної категорії, і зв`язати список книг для управління списком книг.

 приватні void CategoryList_Selectionchanged (object sender, SelectionchangedEventArgs e) {var index = CategoryList.SelectedIndex- ChosenCategoryTextBlock.Text = "Категорія:" + Model.Categories [індекс] .Name- // Показати книги обраної категорії GetBookByCategory (Model.Categories [індекс] .Id) -} приватні void GetBookByCategory (int categoryId) {SQLite.Database дБ = new SQLite.Database ( "bookdb") - / / створює файл бази даних в локальну папку app якщо (db.Ready) {var stmt = db. PrepareStatement ( "ВИБЕРІТЬ Books.id, Books.name, автор, Books.description, categoryid, Categories.Name, Categories.Description З Книг INNER JOIN Категорії, ДЕ Books.categoryid = Categories.id І Books.categoryid =" + categoryId. ToString ()) - Model.Books = new System.Collections.ObjectModel.ObservableCollection<Книга>() - в той час як (stmt.HasMore ()) {var книга = нова Книга () - book.Id = stmt.ColumnAsIntAt (0) - book.Name = stmt.ColumnAsTextAt (1) - book.Author = stmt .ColumnAsTextAt (2) - book.Description = stmt.ColumnAsTextAt (3) - book.Category = нова категорія () - book.Category.Id = stmt.ColumnAsIntAt (4) - book.Category.Name = stmt.ColumnAsTextAt (5 ) - book.Category.Description = stmt.ColumnAsTextAt (6) - Model.Books.Add (книга) -} BookList.ItemsSource = Model.Books-}} private void CategoryList_Selectionchanged (object sender, SelectionchangedEventArgs e) {var index = CategoryList .SelectedIndex- ChosenCategoryTextBlock.Text = "Category:" + Model.Categories [index] .Name- // Show ebooks of the selected category GetBookByCategory (Model.Categories [index] .Id) -} private void GetBookByCategory (int categoryId) { SQLite.Database db = new SQLite.Database ( "bookdb") - // creates the database file in the local app folder if (db.Ready) {var stmt = db.PrepareState ment ( "SELECT Books.id, Books.name, author, Books.description, categoryid, Categories.Name, Categories.Description FROM Books INNER JOIN Categories WHERE Books.categoryid = Categories.id AND Books.categoryid =" + categoryId.ToString ()) - Model.Books = new System.Collections.ObjectModel.ObservableCollection() - while (stmt.HasMore ()) {var book = new Book () - book.Id = stmt.ColumnAsIntAt (0) - book.Name = stmt.ColumnAsTextAt (1) - book.Author = stmt.ColumnAsTextAt ( 2) - book.Description = stmt.ColumnAsTextAt (3) - book.Category = new Category () - book.Category.Id = stmt.ColumnAsIntAt (4) - book.Category.Name = stmt.ColumnAsTextAt (5) - book .Category.Description = stmt.ColumnAsTextAt (6) - Model.Books.Add (book) -} BookList.ItemsSource = Model.Books-}}

6 КРОК: Натисніть кнопку створити обробник подій для SaveCategoryButton контролю, щоб створити нову Категорію.

 приватні void SaveCategoryButton_Click (object sender, RoutedEventArgs e) {рядок ім`я = CategoryNameTextBox.Text- string опис = CategoryDescriptionTextBox.Text- якщо (string.IsNullOrEmpty (ім`я)) return- SQLite.Database дБ = new SQLite.Database ( "bookdb") - / / створює файл бази даних в локальну папку app якщо (db.Ready) {var stmt = db.PrepareStatement ( "CREATE TABLE, яКЩО НЕ ІСНУЄ Категорій (id INTEGER PRIMARY KEY, ім`я, ТЕКСТ, ТЕКСТ опису)") - якщо (stmt.Execute ()) {stmt = db.С ( "INSERT INTO Категорії (id, name, description) VALUES (NULL,?,?)") - stmt.BindText (1, ім`я) - stmt.BindText (2 , опис) - якщо (stmt.Execute ()) {InitViewModel () -}}}} private void SaveCategoryButton_Click (object sender, RoutedEventArgs e) {string name = CategoryNameTextBox.Text- string description = CategoryDescriptionTextBox.Text- if (string. I sNullOrEmpty (name)) return- SQLite.Database db = new SQLite.Database ( "bookdb") - // creates the database file in the local app folder if (db.Ready) {var stmt = db.PrepareStatement ( "CREATE TABLE IF NOT EXISTS Categories (id INTEGER PRIMARY KEY, name TEXT, description TEXT) ") - if (stmt.Execute ()) {stmt = db.PrepareStatement (" INSERT INTO Categories (id, name, description) VALUES (NULL,? ,?) ") - stmt.BindText (1, name) - stmt.BindText (2, description) - if (stmt.Execute ()) {InitViewModel () -}}}}

7 КРОК: Натисніть кнопку створити обробник подій для SaveButton контролю, щоб створити нову Книгу.

 приватні void SaveButton_Click (object sender, RoutedEventArgs e) {якщо (CategoryList.SelectedIndex < 0) { ChosenCategoryTextBlock.Text = "No категория выбрана!"- ChosenCategoryTextBlock.Foreground = new SolidColorBrush (Colors.Red)- return- } SQLite.Database дБ = new SQLite.Database ("bookdb")- / / создает файл базы данных в локальную папку app если (db.Ready) { var stmt = db.PrepareStatement ("CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ Книг (id INTEGER PRIMARY KEY, имя, ТЕКСТ, автор, ТЕКСТ, ТЕКСТ описания, categoryid INTEGER)")- если (stmt.Execute ()) { stmt = db.PrepareStatement ("INSERT INTO Книги (id, название, автор, описание, categoryid) ЗНАЧЕНИЯ (NULL, ?, ?, ?, ?)")- stmt.BindText (1, NameTextBox.Text)- stmt.BindText (2, AuthorTextBox.Text)- stmt.BindText (3, DescriptionTextBox.Text)- var catId = Model.Categories [CategoryList.SelectedIndex] .Id- stmt.BindInt (4, catId)- если (stmt.Execute ()) { GetBookByCategory (catId)- } } } private void SaveButton_Click(object sender, RoutedEventArgs e) { if (CategoryList.SelectedIndex < 0) { ChosenCategoryTextBlock.Text = "No category is selected!"- ChosenCategoryTextBlock.Foreground = new SolidColorBrush(Colors.Red)- return- } SQLite.Database db = new SQLite.Database("bookdb")- // creates the database file in the local app folder if (db.Ready) { var stmt = db.PrepareStatement("CREATE TABLE IF NOT EXISTS Books (id INTEGER PRIMARY KEY, name TEXT, author TEXT, description TEXT, categoryid INTEGER)")- if (stmt.Execute()) { stmt = db.PrepareStatement("INSERT INTO Books (id, name, author, description, categoryid) VALUES (NULL, ?, ?, ?, ?)")- stmt.BindText(1, NameTextBox.Text)- stmt.BindText(2, AuthorTextBox.Text)- stmt.BindText(3, DescriptionTextBox.Text)- var catId = Model.Categories[CategoryList.SelectedIndex].Id- stmt.BindInt(4, catId)- if (stmt.Execute()) { GetBookByCategory(catId)- } } }

8 КРОК: Скопіюйте ресурси bookdb для Локального Зберігання даних при першому запуску. Тепер ми можемо запустити проект, створювати в ньому категорії, або книги, але у нас залишилося питання, якщо ми хочемо мати деякі дані за замовчуванням в базі даних, для цього ми повинні ініціалізувати базу даних при першому запуску, але це не дуже добре, якщо у вас велика база даних для init, тому ми можемо використовувати більш відповідний спосіб, щоб скопіювати існуючі бази даних (як зміст ресурсів нашого проекту) для локального зберігання при першому запуску програми. Спочатку ви повинні додати ваші бази даних за замовчуванням в проект і встановити для них дії, такі як "Зміст".

Потім ми здійснимо InitDb () метод для копіювання ресурсів bookdb для Локального Зберігання даних за допомогою LocalStorage API, що надаються WinRT.

Відео: UniUniDAC компонент для будь-якої бази даних (Lazarus, Rad Studio Delphi) Windows, Mac, Android, iOS

 приватні async void InitDb () {bool searchResult = false- StorageFolder storageFolder = ApplicationData.Current.LocalFolder- спробуйте {StorageFile sampleFile = чекають storageFolder.GetFileAsync ( "bookdb") - searchResult = true-} вилов (FileNotFoundException) {} if (! searchResult) {var resourceLoader = new ResourceLoader () - var file = resourceLoader.GetFile ( "bookdb") - var експлуатація = чекають file.CopyAsync (ApplicationData.Current.LocalFolder, "bookdb") -} InitViewModel () - DataContext = Модель -} private async void InitDb () {bool searchResult = false- storageFolder storageFolder = ApplicationData.Current.LocalFolder- try {StorageFile sampleFile = await storageFolder.GetFileAsync ( "bookdb") - searchResult = true-} catch (FileNotFoundException) {} if (! searchResult) {var resourceLoader = new resourceLoader () - var file = resourceLoader.GetFile ( "bookdb") - var operation = await file.CopyAsync (ApplicationData.Current.LocalFolder, "bookd b ") -} InitViewModel () - DataContext = Model-}

InitDb () буде викликати метод для Головного конструктора і він буде перевіряти, існують вже bookdb на LocalStorage, якщо немає, то InitDb () копіює ресур bookdb для застосування LocalStorage, перш ніж отримати дані з бази даних.

Відео: SQLite - Установка бази, створення таблиці, приклади запитів

Код нижче MainPage.xaml.cs (повний джерело):

простір імен MetroDbAccess {частковий клас MainPage {громадські MainPageViewModel Модель {get- значення-} громадські Головну () {InitializeComponent () - Модель = new MainPageViewModel () - InitDb () -} приватні void SaveButton_Click (object sender, RoutedEventArgs e) {якщо (CategoryList.SelectedIndex < 0) { ChosenCategoryTextBlock.Text = "No категория выбрана!"- ChosenCategoryTextBlock.Foreground = new SolidColorBrush (Colors.Red)- возвращение- } SQLite.Database дБ = new SQLite.Database ("bookdb")- / / создает файл базы данных в локальную папку app если (db.Ready) { var stmt = db.PrepareStatement ("CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ Книг (id INTEGER PRIMARY KEY, имя, ТЕКСТ, автор, ТЕКСТ, ТЕКСТ описания, categoryid INTEGER)")- если (stmt.Execute ()) { stmt = db.PrepareStatement ("INSERT INTO Книги (id, название, автор, описание, categoryid) ЗНАЧЕНИЯ (NULL, ?, ?, ?, ?)")- stmt.BindText (1, NameTextBox.Text)- stmt.BindText (2, AuthorTextBox.Text)- stmt.BindText (3, DescriptionTextBox.Text)- var catId = Model.Categories [CategoryList.SelectedIndex] .Id- stmt.BindInt (4, catId)- если (stmt.Execute ()) { GetBookByCategory (работающих)- } } } } частные void SaveCategoryButton_Click (object sender, RoutedEventArgs e) { строка имя = CategoryNameTextBox.Text- строка описание = CategoryDescriptionTextBox.Text- если (string.IsNullOrEmpty (имя)) return- SQLite.Database дБ = new SQLite.Database ("bookdb")- / / создает файл базы данных в локальную папку app если (db.Ready) { var stmt = db.PrepareStatement ("CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ Категорий (id INTEGER PRIMARY KEY, имя, ТЕКСТ, ТЕКСТ описания)")- если (stmt.Execute ()) { stmt = db.PrepareStatement ("INSERT INTO Категории (id, name, description) VALUES (NULL,?, ?)")- stmt.BindText (1, имя)- stmt.BindText (2, описание)- если (stmt.Execute ()) { InitViewModel ()- } } } } частные void InitViewModel () { SQLite.Database дБ = new SQLite.Database ("bookdb")- / / создает файл базы данных в локальную папку app если (db.Ready) { var stmt = db.PrepareStatement ("CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ Категорий (id INTEGER PRIMARY KEY, имя, ТЕКСТ, ТЕКСТ описания)")- если (stmt.Execute ()) { //Upadate список категорий Model.Categories = new System.Collections.ObjectModel.ObservableCollection<Категория>() - stmt = db.PrepareStatement ( "ВИБЕРІТЬ ідентифікатор, ім`я, опис ІЗ Категорії") - в той час як (stmt.HasMore ()) {// Заповнюємо список категорій var id = stmt.ColumnAsIntAt (0) - var catName = stmt.ColumnAsTextAt (1) - var desc = stmt.ColumnAsTextAt (2) - Model.Categories.Add (нова категорія () {Id = id, Name = catName, Опис = desc}) -}} CategoryList.ItemsSource = Model .Categories-}} приватні void GetBookByCategory (int categoryId) {SQLite.Database дБ = new SQLite.Database ( "bookdb") - / / створює файл бази даних в локальну папку app якщо (db.Ready) {var stmt = db. PrepareStatement ( "ВИБЕРІТЬ Books.id, Books.name, автор, Books.description, categoryid, Categories.Name, Categories.Description З Книг INNER JOIN Категорії, ДЕ Books.categoryid = Categories.id І Books.categoryid =" + categoryId. ToSt ring ()) - Model.Books = new System.Collections.ObjectModel.ObservableCollection<Книга>() - в той час як (stmt.HasMore ()) {var книга = нова Книга () - book.Id = stmt.ColumnAsIntAt (0) - book.Name = stmt.ColumnAsTextAt (1) - book.Author = stmt .ColumnAsTextAt (2) - book.Description = stmt.ColumnAsTextAt (3) - кнігі.Категорія = нова категорія () - book.Category.Id = stmt.ColumnAsIntAt (4) - book.Category.Name = stmt.ColumnAsTextAt (5 ) - book.Category.Description = stmt.ColumnAsTextAt (6) - Model.Books.Add (книга) -} BookList.ItemsSource = Model.Books-}} приватні void CategoryList_Selectionchanged (object sender, SelectionchangedEventArgs e) {var index = CategoryList .SelectedIndex- ChosenCategoryTextBlock.Text = "Категорія:" + Моделі.Категоріі [індекс] .Name- // Показати книги обраної категорії GetBookByCategory (Model.Categories [індекс] .Id) -} приватні async void InitDbButton_Click (object sender, RoutedEventArgs e ) {InitDb () -} ча стние async void InitDb () {bool searchResult = false- StorageFolder storageFolder = ApplicationData.Current.LocalFolder- спробуйте {StorageFile sampleFile = чекають storageFolder.GetFileAsync ( "bookdb") - searchResult = true-} вилов (FileNotFoundException) {} if (! searchResult) {var resourceLoader = new ResourceLoader () - var file = resourceLoader.GetFile ( "bookdb") - var експлуатація = чекають file.CopyAsync (ApplicationData.Current.LocalFolder, "bookdb") -} InitViewModel () - DataContext = Модель -} приватні async void ReplaceDbButton_Click (object sender, RoutedEventArgs e) {bool searchResult = false- StorageFolder storageFolder = ApplicationData.Current.LocalFolder- спробуйте {StorageFile sampleFile = чекають storageFolder.GetFileAsync ( "bookdb") - чекають sampleFile.DeleteAsync () - var resourceLoader = new ResourceLoader () - var file = resourceLoader.GetFile ( "bookdb") - file.CopyAsync (ApplicationData.Current.LocalFol der, "bookdb") - searchResult = true-} вилов (FileNotFoundException) {} if (! searchResult) {var resourceLoader = new ResourceLoader () - var file = resourceLoader.GetFile ( "bookdb") - var експлуатація = чекають file. CopyAsync (ApplicationData.Current.LocalFolder, "bookdb") -}}}} MetroDbAccess {partial class MainPage {public MainPageViewModel Model {get- set-} public MainPage () {InitializeComponent () - Model = new MainPageViewModel () - InitDb ( ) -} private void SaveButton_Click (object sender, RoutedEventArgs e) {if (CategoryList.SelectedIndex < 0) { ChosenCategoryTextBlock.Text = "No category is selected!"- ChosenCategoryTextBlock.Foreground = new SolidColorBrush(Colors.Red)- return- } SQLite.Database db = new SQLite.Database("bookdb")- // creates the database file in the local app folder if (db.Ready) { var stmt = db.PrepareStatement("CREATE TABLE IF NOT EXISTS Books (id INTEGER PRIMARY KEY, name TEXT, author TEXT, description TEXT, categoryid INTEGER)")- if (stmt.Execute()) { stmt = db.PrepareStatement("INSERT INTO Books (id, name, author, description, categoryid) VALUES (NULL, ?, ?, ?, ?)")- stmt.BindText(1, NameTextBox.Text)- stmt.BindText(2, AuthorTextBox.Text)- stmt.BindText(3, DescriptionTextBox.Text)- var catId = Model.Categories[CategoryList.SelectedIndex].Id- stmt.BindInt(4, catId)- if (stmt.Execute()) { GetBookByCategory(catId)- } } } } private void SaveCategoryButton_Click(object sender, RoutedEventArgs e) { string name = CategoryNameTextBox.Text- string description = CategoryDescriptionTextBox.Text- if (string.IsNullOrEmpty(name)) return- SQLite.Database db = new SQLite.Database("bookdb")- // creates the database file in the local app folder if (db.Ready) { var stmt = db.PrepareStatement("CREATE TABLE IF NOT EXISTS Categories (id INTEGER PRIMARY KEY,name TEXT, description TEXT)")- if (stmt.Execute()) { stmt = db.PrepareStatement("INSERT INTO Categories (id, name, description) VALUES (NULL, ?, ?)")- stmt.BindText(1, name)- stmt.BindText(2, description)- if (stmt.Execute()) { InitViewModel()- } } } } private void InitViewModel() { SQLite.Database db = new SQLite.Database("bookdb")- // creates the database file in the local app folder if (db.Ready) { var stmt = db.PrepareStatement("CREATE TABLE IF NOT EXISTS Categories (id INTEGER PRIMARY KEY,name TEXT, description TEXT)")- if (stmt.Execute()) { //Upadate the category list Model.Categories = new System.Collections.ObjectModel.ObservableCollection() - stmt = db.PrepareStatement ( "SELECT id, name, description FROM Categories") - while (stmt.HasMore ()) {// Fill the category list var id = stmt.ColumnAsIntAt (0) - var catName = stmt .ColumnAsTextAt (1) - var desc = stmt.ColumnAsTextAt (2) - Model.Categories.Add (new Category () {Id = id, Name = catName, Description = desc}) -}} CategoryList.ItemsSource = Model.Categories -}} private void GetBookByCategory (int categoryId) {SQLite.Database db = new SQLite.Database ( "bookdb") - // creates the database file in the local app folder if (db.Ready) {var stmt = db.PrepareStatement ( "SELECT Books.id, Books.name, author, Books.description, categoryid, Categories.Name, Categories.Description FROM Books INNER JOIN Categories WHERE Books.categoryid = Categories.id AND Books.categoryid =" + categoryId.ToString ( )) - Model.Books = new System.Collections.ObjectModel.ObservableCollection() - while (stmt.HasMore ()) {var book = new Book () - book.Id = stmt.ColumnAsIntAt (0) - book.Name = stmt.ColumnAsTextAt (1) - book.Author = stmt.ColumnAsTextAt ( 2) - book.Description = stmt.ColumnAsTextAt (3) - book.Category = new Category () - book.Category.Id = stmt.ColumnAsIntAt (4) - book.Category.Name = stmt.ColumnAsTextAt (5) - book .Category.Description = stmt.ColumnAsTextAt (6) - Model.Books.Add (book) -} BookList.ItemsSource = Model.Books-}} private void CategoryList_Selectionchanged (object sender, SelectionchangedEventArgs e) {var index = CategoryList.SelectedIndex- ChosenCategoryTextBlock.Text = "Category:" + Model.Categories [index] .Name- // Show ebooks of the selected category GetBookByCategory (Model.Categories [index] .Id) -} private async void InitDbButton_Click (object sender, RoutedEventArgs e) {InitDb () -} private async void InitDb () {bool searchResult = false- storageFolder storageFolder = ApplicationData.Current.LocalFolder- try {StorageFile sampleFile = await storageFolder.GetFileA sync ( "bookdb") - searchResult = true-} catch (FileNotFoundException) {} if (! searchResult) {var resourceLoader = new ResourceLoader () - var file = resourceLoader.GetFile ( "bookdb") - var operation = await file. CopyAsync (ApplicationData.Current.LocalFolder, "bookdb") -} InitViewModel () - DataContext = Model-} private async void ReplaceDbButton_Click (object sender, RoutedEventArgs e) {bool searchResult = false- StorageFolder storageFolder = ApplicationData.Current.LocalFolder- try {StorageFile sampleFile = await storageFolder.GetFileAsync ( "bookdb") - await sampleFile.DeleteAsync () - var resourceLoader = new ResourceLoader () - var file = resourceLoader.GetFile ( "bookdb") - file.CopyAsync (ApplicationData.Current.LocalFolder , "bookdb") - searchResult = true-} catch (FileNotFoundException) {} if (! searchResult) {var resourceLoader = new ResourceLoader () - var file = resourceLoader.GetFile ( "bookdb") - var operation = await file.CopyAsync (ApplicationData.Current.LocalFolder, "bookdb") -}}}}

9-Й КРОК: Вітаю! Ми створили Metro додаток, яке може отримати доступ до БД sqlite. У разі, якщо у вас є якісь проблеми, ви можете завантажити мій приклад коду для посилання.

Поділися в соц мережах:
Cхоже

Увага, тільки СЬОГОДНІ!