Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 使用vs2012在windows phone app 8中创建本地数据库_Visual Studio 2012_Windows Phone 8_Windows Phone 8 Emulator_Windows Phone 8 Sdk - Fatal编程技术网

Visual studio 2012 使用vs2012在windows phone app 8中创建本地数据库

Visual studio 2012 使用vs2012在windows phone app 8中创建本地数据库,visual-studio-2012,windows-phone-8,windows-phone-8-emulator,windows-phone-8-sdk,Visual Studio 2012,Windows Phone 8,Windows Phone 8 Emulator,Windows Phone 8 Sdk,我想在windows phone 8中开发一个应用程序。 我对这个完全陌生。我想为该应用程序创建一个数据库,从中可以执行CRUID操作。 我在浏览和观看视频时发现了一些信息,但我不太了解 我采取了一些步骤: 已安装适用于vs2012的windows phone app 8 sdk 从Manage Nuget包中添加了一些Sqlite扩展 为应用程序开发了一个基本界面 复制并粘贴了代码,几乎没有更改 我想要的是: 从数据库永久插入和获取数据(我从某个网站下载了一个代码,但在运行该代码后,当我关闭模

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

我采取了一些步骤:

  • 已安装适用于vs2012的windows phone app 8 sdk
  • 从Manage Nuget包中添加了一些Sqlite扩展
  • 为应用程序开发了一个基本界面
  • 复制并粘贴了代码,几乎没有更改
  • 我想要的是:

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

  • 在listview或grid中显示获取的数据

  • 请给我发送链接,我可以通过或任何类似的问题在这里提出

    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 = "";
        }
    }
    }
    
    使用系统;
    使用System.Collections.Generic;
    使用System.Linq;
    Net系统;
    使用System.Windows;
    使用System.Windows.Controls;
    使用System.Windows.Navigation;
    使用Microsoft.Phone.Controls;
    使用Microsoft.Phone.Shell;
    使用CustomerPhoneApp.Resources;
    使用SQLite;
    使用System.IO;
    使用Windows基金会;
    使用Windows。
    使用Windows.Storage;
    使用Windows.UI.Popups;
    使用System.Data.Linq;
    使用系统诊断;
    命名空间CustomerPhoneApp
    {
    公共部分类主页:PhoneApplicationPage
    {
    [表(“用户”)]
    公共类用户
    {
    [主密钥,唯一]
    公共字符串名称{get;set;}
    公共字符串年龄{get;set;}
    }
    受保护的异步重写无效OnNavigatedTo(NavigationEventArgs e)
    {
    尝试
    {
    var path=ApplicationData.Current.LocalFolder.path+@“\users.db”;
    var db=新的SQLiteAsyncConnection(路径);
    等待db.CreateTableAsync();
    }
    捕获(例外)
    {
    }
    }
    //建造师
    公共主页()
    {
    初始化组件();
    }
    专用异步无效按钮\u单击(对象发送方,路由目标)
    {
    if(txtName.Text!=“”&&txtAge.Text!=“”)
    {
    var path=ApplicationData.Current.LocalFolder.path+@“\users.db”;
    var db=新的SQLiteAsyncConnection(路径);
    var数据=新用户
    {
    Name=txtName.Text,
    Age=txtAge.Text,
    };
    int x=等待db.InsertAsync(数据);
    }
    其他的
    {
    MessageBox.Show(“输入标题和注释”);
    }
    }
    私有无效按钮\u单击\u 1(对象发送者,路由目标)
    { 
    retrieveusersaveddata();
    }
    私有异步void retrieveusersaveddata()
    {
    字符串结果=”;
    var path=ApplicationData.Current.LocalFolder.path+@“\users.db”;
    var db=新的SQLiteAsyncConnection(路径);
    List allUsers=WAIT db.QueryAsync(“从用户中选择*);
    var count=alluser.Any()?alluser.count:0;
    foreach(allUsers中的var项目)
    {
    结果+=“名称:”+item.Name+“\nAge:”+item.Age.ToString()+“\n\n”;
    }
    if(Result.ToString()=“”)
    {
    MessageBox.Show(“无数据”);
    }
    其他的
    {
    Show(Result.ToString());
    }
    }
    私有void txtName_TextChanged(对象发送者,textchangedventargs e)
    {
    }
    私有void txtName_GotFocus(对象发送方,路由目标e)
    {
    txtName.Text=“”;
    }
    私有void txtAge_GotFocus(对象发送方,路由目标)
    {
    txtAge.Text=“”;
    }
    }
    }
    
    1.-永久性地从数据库中插入和获取数据(我从某个网站下载了一个代码,但在运行它之后,当我关闭模拟器并尝试查看以前输入的数据时,它不会返回它)

    关闭仿真器时,将丢失其上安装的所有应用程序,因此,如果关闭仿真器,将丢失所有应用程序。如果要测试数据保存,可以关闭应用程序(仅de app,而不是emulator),然后从WP emulator中的应用程序列表中打开它

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

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

    @Gahendra Rajput。确切的问题是什么?@Eldho当emulator关闭时,使用上述代码输入的数据丢失。单击“查看客户”按钮时,不会显示以前输入的客户。我希望显示以前输入的数据。这有可能吗?Hi@Brakyo考虑到一个真实的场景,在这个例子中,当emulator关闭时,输入的数据丢失。如果我在windows phone中部署该特定应用程序,它会保留输入的数据吗?或者它将丢失?@gajendrajput在卸载应用程序之前,数据将可用。数据库存储在每个应用程序的
    隔离存储中。一旦用户卸载应用程序,“AppData”例如您的数据库将丢失。如果用户重新启动手机,您的手机仍然可用。emulator每次都在初始化,因此它意味着一个新的手机实例,因此已保存的数据将从内存中删除。尝试在电话中调试。感谢@Eldho的解释。这大大澄清了我的疑问。@Gajendrajput是的,如果您部署在物理电话中,数据将被保留。谢谢@Brakyo的解释