嵌入式SQL CE在图书外采查重系统中的应用
1.4 远程数据访问RDA
图书馆都有图书馆自动化集成系统,数据都存储在大型数据库系统中,例如Oracle、SQL Server 2000/2005、Sybase等。在任何一个分布式移动应用环境中,移动设备与数据中心的数据交互是要解决的重点问题,在系统设计中,如何实现智能手机中的数据库与图书馆数据库一致最为关键,这就是数据同步。
SQL Server CE数据库通过IIS和远程数据访问RDA与SQL Server数据库进行通信,远程数据访问RDA为智能手机应用程序访问SQL Server数据库提供了一种简单的访问方式,可以将SQL Server数据库的数据下载到智能手机的SQL Server CE数据库中,也可以将智能手机的数据写入到SQL Server 数据库中,这样就实现了数据同步,RDA非常适合开发离线数据解决方案。
图书外采查重系统使用远程数据访问RDA技术实现了数据同步,RDA主要由SQL Server CE数据库引擎、SQL Server CE客户端代理和SQL Server CE服务器端代理三部分组成。并且RDA提供了如下三个主要方法实现SQL Server CE与SQL Server数据同步。
(1)Pull方法:将SQL Server数据库中的表“拉”到SQL Server CE中。在调用此方法时,可以设置数据跟踪选项,如果设置数据跟踪,则SQL Server CE数据库引擎会自动跟踪对数据的插入、修改和删除操作。
(2)Push方法:如果在Pull时设置了数据跟踪选项,可以将SQL Server CE中的数据“推”回到SQL Server中,在SQL Server CE中对数据的任何修改都会反映到SQL Server中。
(3)SubmitSQL方法:直接向SQL Server数据库提交一个命令。
2 系统设计与实现
2.1 建立数据库
嵌入式数据库SQL Server CE的数据存储在一个扩展名为.SDF的文件中,SQL Server CE 只支持一次一个链接,但多个命令可以共享同一链接。.NET Compact Framework下开发SQL Server CE统一使用System.Data.SqlServerCe.DLL[2],该DLL封装的命名空间和类是一致的,在VS2008下开发默认使用的.NET Compact Framework版本是3.5,默认使用的SQL Server CE版本是3.5,一般存放在C:Program FilesMicrosoft SQL Server Compact Editionv3.5Devices路径下。在智能手机上创建一个空的本地SQL Server CE数据库,建立数据库程序代码如下:
//创建SQL Server CE数据库文件LIBRARY.SDF
using System.Data.SqlServerCe;
string strConn=DATASOURCE=+dbPath+@LIBRARY.SDF;
SqlCeEngine engine=new SqlCeEngine(strConn);
engine.CreateDatabase();
engine.Dispose();
2.2 数据同步
数据同步功能指通过远程数据访问RDA从图书馆自动化集成系统SQL Server数据库将藏书数据下载到智能手机的LIBRARY.SDF数据库中。远程数据访问RDA需要用到.NET Compact Framework 3.5中System.Data.SqlServerCe命名空间中的SqlCeRemoteDataAccess类[3-4],数据同步程序代码如下:
//引用命名空间SqlCeRemoteDataAccess
using SqlCeRemoteDataAccess;
//实例化并配置远程数据访问
//SQLCeRemoteDataAccess对象
SqlCeRemoteDataAccess rda=new SqlCeRemoteDataAccess();
rda.InternetUrl=http://216.210.98.2/SQLServerMobile/
SQLcesa30.dll;
rda.InternetLogin=IISUserName;
rda.InternetPassword=IISPassword;
rda.LocalConnectionString=DATASOURCE=+dbPath+
@LIBRARY.SDF;
//从SQL Server数据库中同步数据
rda.Pull(Books,SELECT ISBN,Title,Author,BookConcern,Amount FROM Books,Provider=SQLOledb;Server=LIS_Server;Database=LIS;uid=GD;pwd=GD;,RdaTrackOption.TrackingOnWithIndexes,ErrorTable);
2.3 图书查重设计
通过远程数据访问RDA将图书馆自动化集成系统中的藏书数据同步到智能手机的数据库LIBRARY.SDF中,图书外采时,智能手机应用程序链接SQL Server CE数据库LIBRARY.SDF,检索Books数据表中是否有相关图书记录。
开发手机数据库程序所用到的控件和类与开发桌面数据库程序具有相似性,如SqlCeConnection对应SqlConnection,SqlCeDataAdapter对应SqlDataAdapter,SqlCeCommand对应SqlCommand等。图书外采查重系统基于.NET Compact Framework3.5设计,要在智能手机上创建、管理和查询SQL Server CE数据库,必须在程序中添加对System.Data.SqlServerCe的引用,图书查重程序代码如下:
//命名空间System.Data.SqlServerCe using System.Data.SqlServerCe;
//创建SqlCeConnection对象,链接数据库文件LIBRARY.SDF
SqlCeConnection objCeConnection=new SqlCeConnection(DATASOURCE=+dbPath+@LIBRARY.SDF);
objCeConnection.Open(); //根据ISBN号,生成图书查询SQL语句
SQLText = SELECT×FROM Books WHERE ISBN=+txtISBN.Text;
//创建SqlCeCommand对象
SqlCeCommand objCeCommand=new SqlCeCommand(objCeConnection);
objCeCommand.CommandText=SQLText;
//创建SqlCeDataReader对象
SqlCeDataReader objCedr=objCeCommand.ExecuteReader();
//查询馆藏图书是否存在
if (!objCedr.Read())
{ listBox.Items.Add(馆藏没有ISBN号=
+txtISBN.Text+图书,可以采购。);}
else
{
listBox.Items.Add(ISBN号:+objCedr[ISBN].ToString());
listBox.Items.Add(书名:+objCedr[Title].ToString());
listBox.Items.Add(作者:+objCedr[Author].ToString());
listBox.Items.Add(出版社:+objCedr[BookConcern].ToString());
listBox.Items.Add(藏书数量:+objCedr[Amount].ToString()+本);
listBox.Items.Add(馆藏图书已有,建议不要采购!);
}
c++相关文章:c++教程
评论