代码之家  ›  专栏  ›  技术社区  ›  Gajendra Rajput

使用vs2012在windows phone应用程序8中创建本地数据库

  •  1
  • Gajendra Rajput  · 技术社区  · 9 年前

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

    我做了一些步骤:

    1. 已安装vs2012的windows phone应用程序8 sdk
    2. 从管理Nuget包中添加了一些Sqlite扩展。
    3. 开发了应用程序的基本界面。
    4. 复制并粘贴代码,几乎没有更改

    我想要的:

    1. 从数据库永久插入和提取数据 (我从某个网站下载了一段代码,但在运行后,当我关闭模拟器并尝试查看之前输入的数据时,它不会返回)
    2. 就像它应该存储在手机存储器或任何类似的地方

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

    请将我可以通过的链接或任何类似问题发送给我

    主页.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 回复  |  直到 9 年前
        1
  •  1
  •   Brakyo    9 年前

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

    当你关闭模拟器时,你会丢失安装在模拟器上的所有应用程序,所以如果你关闭模拟器,你就会丢失所有应用程序。如果您想测试数据保存,可以关闭应用程序(仅取消应用程序,而不是模拟器),然后从WP模拟器中的应用程序列表中打开它。

    就像它应该存储在手机存储器或任何类似的地方 使用SQLlite,您无法将数据存储在SD中,它将存储在应用程序目录中,如果您想使用SD存储数据,可以使用二进制文件

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