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,如需转载请自行联系原作者





相关文章
|
5月前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
241 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
7月前
|
Ubuntu Linux Windows
如何在Ubuntu系统中安装Wine,借此来运行Windows程序
熟悉的登录画面出现,在Ubuntu系统中扫描登录微信程序。
|
7月前
|
Unix Linux 编译器
解决在Windows平台上运行Golang程序时出现的syscall.SIGUSR1未定义错误。
通过这种结构,你的代码既可以在支持 SIGUSR1 信号的系统上正常工作,又可以在不支持这些信号的 Windows 系统上编译通过,确保跨平台的兼容性和功能的完整性。
273 0
|
8月前
|
Windows
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
235 2
|
9月前
|
Windows
Windows下版本控制器(SVN)-启动服务器端程序
Windows下版本控制器(SVN)-启动服务器端程序
333 4
|
10月前
|
安全 测试技术 Linux
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
316 2
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
|
10月前
|
安全 Devops 测试技术
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
200 0
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
|
12月前
|
存储 监控 安全
如何排查常见的 Windows 应用程序错误和崩溃
本文介绍了如何通过事件日志分析来诊断Windows应用程序错误和崩溃的根本原因。文章首先解释了应用错误的表现形式及常见事件ID(如1000、1001等),并分析了导致崩溃的原因,包括硬件问题(如存储不足、外部因素)和软件问题(如编码错误、数据损坏、.NET Framework兼容性)。接着,提供了几种故障排除方法,例如运行系统文件检查器(SFC)、执行干净启动、检查更新以及重新安装.NET Framework。最后,探讨了使用日志管理工具(如EventLog Analyzer)集中分析崩溃事件的功能,包括预置报表、时间轴分析、实时警报和自动化响应,帮助管理员高效解决应用问题。
1864 1
|
移动开发 程序员 C#
Windows移动开发(三)——闭关修炼
上一次,我们了解了委托,委托和Lambda表达式结合是一件灰常灰常爽的事情,这也是只有.Net才有,自己偷着笑去吧。几天这次,我要介绍一下继承和多态,这是进行面向对象编程必须熟练掌握的技术和思想。
1234 0
|
5月前
|
安全 数据安全/隐私保护 虚拟化
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)
1209 2
Windows Server 2022 中文版、英文版下载 (2025 年 10 月更新)

热门文章

最新文章