WinCE中基于XML的数据同步
当前主流的嵌入式系统的操作系统(OS)包括WinCE、Palm等等,其中以Palm的历史最为长久,但是以WinCE的普及推广速度最快,操作最为灵活,应用最为广泛,因此当前时期,大多数的用户选择WinCE作为当前嵌入式系统的操作系统。
2.2.1.WinCE操作系统
WinCE操作系统是嵌入式操作系统中的一种,为微软所研制开发,包含WinCE、WinCE.NET、Windows XP Embedded等一系列的Mobile Windows家族。正迅速地为人们所接受。
2.2.2.Compact .Net FrameWork
随着.NET开发平台2003版的推出,微软包容了嵌入式系统的开发,使得嵌入式系统的开发更为简便更为容易。
2.3.XML文件传输
由于XML是一个文本类型的文件,因此具备跨平台的能力,可以为UNIX、LINUX等非Windows平台所接受,由于是文本类型的文件,因此传输方式可以多种多样。比如使用存储器进行传输,存储器包括存储卡、磁盘、磁带等等存储载体;也可以通过网络下载复制的功能,比如通过有线或无线局域网,或者GPRS、Moden等等网络载体;还可以通过红外端口的发送接收文件的方式进行传输。
3.实现方法
由于是WinCE,因此可以使用Visual Studio .Net 2003版进行编程,利用Visual Studio .NET 2003版中带的Compact .Net FrameWork,使所编制的程序可以运行在WinCE的嵌入式系统中。
针对微软的.NET计划,相信不久的将来,Compact .Net FrameWork也可以运行到Palm等其它嵌入式系统中。
3.1.PC端XML数据导出
假设我们已经有了数据库连接SQLconn,strSQL是待执行的SQL语句,则我们的PC端服务程序导出可以写成如下方式。
//初始化SqlDataAdapter
System.Data.SqlClient.SqlDataAdapter myDataAdapter = new System.Data.SqlClient.SqlDataAdapter();
//初始化SelectCommand ,其中strSQL为待执行的SQL语句,SQLconn为数据连接
myDataAdapter.SelectCommand = new System.Data.SqlClient.SqlCommand(strSQL,SQLconn);
//使用myDataAdapter初始化SqlCommandBuilder
System.Data.SqlClient.SqlCommandBuilder myCB = new System.Data.SqlClient.SqlCommandBuilder (myDataAdapter);
//初始化一个DataSet
System.Data.DataSet DS = new System.Data.DataSet();
//执行strSQL中的SQL指令,查询结果填充到DS中
myDataAdapter.Fill (DS);
//从E:ExFromPC.XSD文件中导入XML架构
DS.WriteXmlSchema(E:ExFromPC.XSD);
//按照XML架构导出XML数据到E:ExFromPC.XML中
DS.WriteXml(E:ExFromPC.XML);
自此,XML文件已经导出完成,即可使用2.3所阐述的文件传输方式的任意一种传输到WinCE嵌入式系统中去。
3.2.WinCE端数据导入
//初始化DataSet
System.Data.DataSet DS = new System.Data.DataSet();
//初始化XML架构文件操作流
FileStream FsXSD = new FileStream(ExFromPC.xsd,FileMode.Open);
//初始化XML架构读取设备
XmlTextReader xtrXSD = new XmlTextReader(FsXSD);
//载入XML架构到DS中
DS.ReadXmlSchema(xtrXSD);
//关闭XML架构读取设备
xtrXSD.Close();
//关闭XML架构文件操作流
FsXSD.Close();
//按照装载了的XML架构载入XML数据到DS
DS.ReadXml(ExFromPC.XML);
在载入完XML数据之后,即可通过种种方法把数据写入到数据库中,或交由其它方式处理,在此不再陈述。
3.3.WinCE端数据导出
//初始化DataSet
System.Data.DataSet DS = new System.Data.DataSet();
//初始化SqlCeDataAdapter
System.Data.SqlServerCe.SqlCeDataAdapter myDataAdapter = new System.Data.SqlServerCe.SqlCeDataAdapter();
//初始化SelectCommand ,其中conn是数据连接,p_strSQL待执行的SQL语句
myDataAdapter.SelectCommand = new System.Data.SqlServerCe.SqlCeCommand(p_strSQL,conn);
//初始化SqlCeCommandBuilder
System.Data.SqlServerCe.SqlCeCommandBuilder myCB = new System.Data.SqlServerCe.SqlCeCommandBuilder(myDataAdapter);
//加载映射的数据表名p_strTableNameTemp为数据表名
myDataAdapter.TableMappings.Add(Table,p_strTableNameTemp);
//把SQL语句执行结果写入到DS中
myDataAdapter.Fill (DS);
//初始化XML架构文件操作流
FileStream FsXSD = new FileStream(ExFromPC.xsd,FileMode.Open);
//初始化XML架构读取设备
XmlTextReader xtrXSD = new XmlTextReader(FsXSD);
//载入XML架构
DS.ReadXmlSchema(xtrXSD);
//关闭XML架构读取设备
xtrXSD.Close();
//关闭XML架构文件操作流
FsXSD.Close();
//导出XML数据文件
DS.WriteXml(ExFromPC.xml);
自此,XML文件已经导出完成,即可使用2.3所阐述的文件传输方式的任意一种传输到PC中去。
3.4.PC端XML数据导入
//初始化架构文件操作流
FileStream FsXSD = new FileStream(E:ExFromCE.XSD,FileMode.Open);
//初始化XML数据文件操作流
FileStream FsXML = new FileStream(E:ExFromCE.XML,FileMode.Open);
//初始化DataSet
System.Data.DataSet DS = new System.Data.DataSet();
//初始化XML架构读取设备
XmlTextReader xtrXSD = new XmlTextReader(FsXSD);
//载入XML架构
DS.ReadXmlSchema(xtrXSD);
//关闭XML架构读取设备
xtrXSD.Close();
//关闭XML架构文件流
评论