使用vs2012在Windows Phone app 8中创建本地数据库

时间:2015-09-02 08:50:13

标签: visual-studio-2012 windows-phone-8 windows-phone-8-emulator windows-phone-8-sdk

我想在Windows Phone 8中开发一个应用程序。 我对此完全陌生。我想为该应用程序创建一个数据库,我可以从中执行CRUID操作。 我在浏览和观看视频时发现了一些信息,但我对此并不了解。

我做了一些步骤:

  1. 已安装windows phone app 8 sdk for vs2012
  2. 从Manage Nuget Packages添加了一些Sqlite扩展。
  3. 为应用程序开发了一个基本界面。
  4. 使用少量更改复制并粘贴代码
  5. 我想要的是什么:

    1. 永久性地从数据库中插入和获取数据(我从某个网站下载了一个代码但在关闭模拟器并运行它之后尝试查看以前输入的数据时,它不会返回它)
    2. 喜欢将它存储在手机记忆库或任何此类地方

    3. 在列表视图或网格中显示提取的数据

    4. 请将我可以通过的链接或此处提出的任何类似问题发送给我

      MainPage.xaml.cs代码:

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Net;
      using System.Windows;
      using System.Windows.Controls;
      using System.Windows.Navigation;
      using Microsoft.Phone.Controls;
      using Microsoft.Phone.Shell;
      using CustomerPhoneApp.Resources;
      using SQLite;
      using System.IO;
      using Windows.Foundation;
      using Windows.Foundation.Collections;
      using Windows.Storage;
      using Windows.UI.Popups;
      using System.Data.Linq;
      using System.Diagnostics;
      
      namespace CustomerPhoneApp
      {
      public partial class MainPage : PhoneApplicationPage
      {
          [Table("Users")]
          public class User
          {
              [PrimaryKey, Unique]
      
              public string Name { get; set; }
              public string Age { get; set; }
          }
      
          protected async override void OnNavigatedTo(NavigationEventArgs e)
          {
              try
              {
                  var path = ApplicationData.Current.LocalFolder.Path + @"\users.db";
                  var db = new SQLiteAsyncConnection(path);
                  await db.CreateTableAsync<User>();
              }
              catch (Exception)
              {
              }
          }
      
          // Constructor
          public MainPage()
          {
              InitializeComponent();
          }
      
          private async void Button_Click(object sender, RoutedEventArgs e)
          {
              if (txtName.Text != "" && txtAge.Text != "")
              {
                  var path = ApplicationData.Current.LocalFolder.Path + @"\users.db";
                  var db = new SQLiteAsyncConnection(path);
                  var data = new User
                  {
                      Name = txtName.Text,
                      Age = txtAge.Text,
                  };
      
                  int x = await db.InsertAsync(data);
              }
              else
              {
                  MessageBox.Show("enter the title and Notes");
              }
          }
      
          private void Button_Click_1(object sender, RoutedEventArgs e)
          { 
              RetriveUserSavedData();
          }
      
          private async void RetriveUserSavedData()
          {
              string Result = "";
              var path = ApplicationData.Current.LocalFolder.Path + @"\users.db";
              var db = new SQLiteAsyncConnection(path);
      
              List<User> allUsers = await db.QueryAsync<User>("Select * From Users");
              var count = allUsers.Any() ? allUsers.Count : 0;
      
              foreach (var item in allUsers)
              {
                  Result += "Name: " + item.Name + "\nAge: " + item.Age.ToString() + "\n\n";
              }
      
              if (Result.ToString() == "")
              {
                  MessageBox.Show("No Data");
              }
      
              else
              {
                  MessageBox.Show(Result.ToString());
              }
          }
      
          private void txtName_TextChanged(object sender, TextChangedEventArgs e)
          {
      
          }
      
          private void txtName_GotFocus(object sender, RoutedEventArgs e)
          {
              txtName.Text = "";
          }
      
          private void txtAge_GotFocus(object sender, RoutedEventArgs e)
          {
              txtAge.Text = "";
          }
      }
      }
      

1 个答案:

答案 0 :(得分:1)

1 .- 永久性地从数据库中插入和获取数据(我从某个网站下载了代码,但在关闭模拟器并尝试查看先前输入的数据后运行它,它将不会返回它)

当您关闭模拟器时,您丢失了所有应用程序安装程序,因此如果您关闭它,则会丢失所有应用程序。如果要测试数据保存,可以关闭应用程序(仅限应用程序,而不是模拟器)并从WP模拟器中的应用程序列表中打开它。

就像它应该存储在手机记忆库或任何这样的地方 使用SQL lite,您无法将数据存储在SD中,它将存储在您的app目录中,如果您想使用SD存储数据,则可以使用二进制文件

在列表视图或网格中显示提取的数据 要在列表视图或网格中显示数据,您需要创建一个ViewModel或DataContext,然后使用Binding将数据“发送”到de view。