Windows phone本地数据库开发之 SQL CE
1.打开MS SQL Management studio 创建一个名为MyDatabase.sdf的数据库文件,为了方便演示就不键入密码了 囧~~
2.打开上一步创建的数据库,新增一个Person表,如下图:
3.利用SqlMetal.exe命令工具生成数据库源码和映射。
该工具位于:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin
用法:运行CMD,把SqlMetal拖到命令行控制台,键入一个空格然后输入D:\MyDatabase.sdf /code:MyDatabase.cs 轻巧回车键,这时就会在你的个人文件夹中生成源码
如觉得上面的操作太麻烦,可使用我写的一个小程序生成数据库源码:
下载地址:猛击下载
4.把数据库文件、生成的源码文件 拷进你的解决方案中,并添加System.Data.Linq的引用
5.编译一下发现这货报错了,把下图中的两个构造函数删除即可
6.如需要对数据库进行 增、删、改操作,则需要将数据库复制进独立存储区中。我们可以创建一个DBHelper.cs辅助类,代码如下:
public class DBHelper { public void MoveDB() { IsolatedStorageFile userStoreForApplication = IsolatedStorageFile.GetUserStoreForApplication(); using (Stream stream = Application.GetResourceStream(new Uri("MyDatabase.sdf", UriKind.Relative)).Stream) { if (!userStoreForApplication.FileExists("MyDatabase.sdf")) { using (IsolatedStorageFileStream stream2 = userStoreForApplication.CreateFile("MyDatabase.sdf")) { byte[] buffer = new byte[1024]; int count = -1; while ((count = stream.Read(buffer, 0, buffer.Length)) > 0) { stream2.Write(buffer, 0, count); } } } } } private static MyDatabase m_Instance = null; public static MyDatabase Instance // 数据库实例 { get { if(m_Instance == null) { m_Instance = new MyDatabase("isostore:/MyDatabase.sdf"); }
return m_Instance; } } }
7.数据的加载
前台:
<ListBox Name="lstPerson"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding Name}"></TextBlock> <TextBlock Text="{Binding Email}"></TextBlock> <TextBlock Text="{Binding Age}"></TextBlock> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
后台:
// 构造函数 public MainPage() { InitializeComponent(); // 程序运行时,执行一遍数据库复制操作 DBHelper.MoveDB(); LoadData(); } // 加载数据 private void LoadData() { var query = from m in DBHelper.Instance.Person select m; lstPerson.ItemsSource = query.ToList(); }
8. 增删改部分: