开发者社区> 技术小胖子> 正文

windows mobile开发循序渐进(4)移动应用程序的数据存储之本地数据存储第二篇

简介:
+关注继续查看

之所以分解来写,是因为在写的过程中会有些穿插的工作,希望能够尽量写的更细节一些。

上篇说的是本地存储的XML和DataSet之间的交互,现在我们来看看windows mobile 是如何与数据库进行交互的。

轻量级的SQL Server CE

由于windows mobile 5.0中包含了.Net compact framework组建,谈到.Net平台的数据存储,我们首先想到的是ADO.NET,是的,在windows mobile设备访问本地的数据库使用的正是类似ado.net的一组操作类,从webcast上我找到了这样的结构图示

  • .net compact framework managed stack
  • visual studio .net
  • ado.net
  • sql server ce data provider
  • .net compact framework runtime
  • ole db for windows ce
  • sql server ce                         data provider

从这个结构可以看出,其实这和windows form应用程序的访问数据库架构几乎一模一样,这样的话我们就可以很简单的来使用这些组件访问数据库了。

windows mobile 5.0中带的数据库是SQL Server CE,这是一个轻量级的数据存储组件。其数据库的存在形式是一个单独的文件(如:northwind.sdf),你可以直接在模拟器中打开,打开方式默认是在sql server ce中打开,界面类似于SQL Server 中的查询分析器,如下图: 

可以在这里输入查询命令

 

这里是查询结果窗口

 

了解了这些之后,我们看看windows mobile 上的应用程序是如何访问 SQL Server CE 的

移动应用程序与SQL Server CE之间的交互

同我们熟悉的sqlconnection,sqlcommand,sqldataadapter一样,我们同样可以使用这样一组类来提供应用程序和数据库之间的交互。

这里我打算做一个任务管理来体验windows mobile开发,因此建立了一个数据库如下 

如何建立此数据库?可以在 visual studio 2008中的服务器管理器中连接到windows mobile的SQL Server CE 

  

选择更改数据源,在更改数据源选项中选择Microsoft SQL Server Compact 3.5 

  

选择ActiveSync连接的设备就能连接到windows mobile 5.0模拟器了,这里我们可以选择创建或打开已有的数据库,并设置密码,当然这里可以选择数据库存放的路径位置等。 

  

 

数据库建立完成后我们便可以在应用程序中访问数据库了, 

  

如上图所示我建立了一个TaskList项目,并写了一个简单的数据操作类完成插入和提取数据的功能。

 代码

using System; 
using System.Linq; 
using System.Collections.Generic; 
using System.Text; 
using System.Data; 
using System.Data.SqlServerCe; 
namespace MyMobileTaskList 

    
class DB 
    { 
        
public static string ConString = "Data Source=MyTask.sdf"

        
public static DataTable GetDataSet(string strSql) 
        { 
            SqlCeConnection con 
= new SqlCeConnection(ConString); 
            con.Open(); 
            SqlCeDataAdapter sda 
= new SqlCeDataAdapter(strSql, con); 
            DataSet ds 
= new DataSet(); 
            sda.Fill(ds); 
            con.Close(); 
            
return ds.Tables[0];            
        } 

        
public static void InsertData(string strSql) 
        { 
            SqlCeConnection con 
= new SqlCeConnection(ConString); 
            con.Open(); 
            SqlCeCommand cmd 
= new SqlCeCommand(strSql, con); 
            cmd.ExecuteNonQuery(); 
            con.Close(); 
        } 

    } 
}

 在AddTask.cs窗体中我们这样就可以直接调用了

窗体: 

   

代码
    public partial class AddTask : Form 
    { 
        
public AddTask() 
        { 
            InitializeComponent(); 
        } 

        
private void btnAdd_Click(object sender, EventArgs e) 
        { 
            
string strInsert = " insert into tasklist(date,place,event) values ('" + Convert.ToDateTime( this.txtTime.Text) + "','" + this.txtPlace.Text + "','" + this.txtTask.Text + "') "
            DB.InsertData(strInsert); 

            
//localhost.Hello webs = new MyMobileTaskList.localhost.Hello(); 

            MessageBox.Show(
"任务添加成功!"); 
        } 
    }

 

 

用来显示数据的窗体TaskList.cs的代码

 

代码
public partial class TaskList : Form 
    { 
        
public TaskList() 
        { 
            InitializeComponent(); 

            
this.dataGrid1.DataSource = DB.GetDataSet("select * from tasklist"); 
        } 

     }

 写到这里其实已经可以顺利访问数据库了,但是我这里还有个小问题,就是运行后在显示数据的这个界面点击时反应特别慢,甚至卡死。 

  

请了解的朋友告知一下。



    本文转自wengyuli 51CTO博客,原文链接:http://blog.51cto.com/wengyuli/588083,如需转载请自行联系原作者





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
突发!32TB Windows 10核心数据泄漏,被人上传至第三方公开网站
本文讲的是突发!32TB Windows 10核心数据泄漏,被人上传至第三方公开网站,据外媒The Register报道,微软Windows操作系统内部大量组件和核心代码泄漏,正在网络上传播。
1317 0
Windows Phone 下开发 LBS 应用
基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。
52 0
将数据从服务器端同步到手机上, 并且需要离线工作,Couchebase Mobile 也许是目前最好的解决方案:
将数据从服务器端同步到手机上, 并且需要离线工作,Couchebase Mobile 也许是目前最好的解决方案: 原文地址: https://www.infinum.co/the-capsized-eight/articles/server-client-syncing-for-mobile-a...
1475 0
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载