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. 增删改部分:

 

 

 

posted @ 2012-07-03 16:57  lanmiao  阅读(496)  评论(0编辑  收藏  举报