本文由灵自古来 邮箱[email protected] 微信号lingzigulai 原创,转载请注明出处,谢谢。
一、程序结构
程序中包括3个部分:
1.系统配置
这个部分用来配置系统中的相关参数,参数包括服务器数据库连接信息和登录的配置信息,硬件唯一号。这部分的主要技术是移动数据库sql server ce读取和写入。
2.数据下载
从数据库中下载数据到PDA,PDA上的保存也是使用数据库。这部分的技术主要是PDA设备上的移动数据库开发和使及用PDA连接PC数据库
3.数据上传
把PDA上的数据上传到PC数据库中,使用的技术和2相同。
二、 开发环境
软件环境: Visual studio 2008
PC数据库: sql server 2012
智能设备: Windows CE(模拟器)
3 建立工程
3.1 建立项目
建立工程的过程和VS建立其他工程步骤相同,通过vs2008中的菜单“文件-新建-项目 ”,建立一个新项目。
VS2008已经集成了智能设备的开发环境,根据开发语言的不同,在不同的开发语言树中选择“智能设备”,根据设备,选择合适的项目,本列选择CE的,下方的名称中填写项目名称,点击“确定”按钮,就建立了一个智能设备的程序项目。
3.2 建立调试环境
VS2008中已经包括了智能设备的仿真程序,编写的程序可以通过PC机上的仿真程序进行调试,不必在PDA上逐个调试程序,也可以网上下载模拟器,使用设置管理中心,将其与vs2008相连。
建立项目后,通过菜单“项目--项目属性”中的“设备”页中设置调试内容。
在下拉框中,选择目标设备的类型。类型的选择要根据PDA的操作系统进行确定,PDA上如果是中文操作系统,请选择“CHS”打头的选项。具体如何选择,请根据PDA的操作系统进行。如果对选项中的内容不了解,请查阅其他资料。
仿真程序的选择和设置不仅仅只有这一种方式,也可以通过VS2008中的“工具-设备仿真器管理器”进行设置。
3.3 绘制窗体
智能设备的窗体和windows窗口的差别不是很大。在工程中选择添加窗体后,VS中出现PDA屏幕模样的模板。需要什么功能,在工具箱中把对应的控件拖到模板上即可。这部分的开发和普通的Windows程序开发没有什么不同。
不同的部分就是菜单。智能设备的菜单中有缺省菜单,就是在屏幕底部有个菜单控件,可以通过增加菜单项的方式增加菜单。需要注意的是,一级菜单只能有两个,而且设置的时候,只能先设置左边的菜单项内容,才能设置右边菜单项内容,而本项目需求中因为是触摸屏,使用自添加按钮来做菜单。
控件的使用也是有严格限制的。VS2008中能使用的控件分布在工具箱的“所有设备控件V2”、“公共设备控件 v2”、“设备容器 v2”、“设备菜单和工具栏V2”、“设备数据V2”、“设备组件V2”、“设备对话框V2”。使用控件的方式和Windows窗体的设计没有什么不同。
4 调试
调试程序的方式同普通的程序调试差别不大,也通过单步调试等等的功能。唯一的差别就在于调试中程序在仿真器中运行。
4.1 其他文件
在调试中,程序如果只有一个EXE文件,而不涉及到其他文件,可以直接在仿真程序中运行。但是如果程序还有其他文件的话,需要把文件也要部署到PDA仿真器上。如何部署其他文件,请参考下面步骤:
1.通过仿真器上的菜单“文件――配置…”菜单设置共享文件夹。
通过后面的按钮,浏览电脑中的磁盘,并选择恰当的目录。“共享文件夹”在设置完成后,将作为PDA仿真器的扩展存储空间,仿真器中共享文件夹被命名为自己所需求的。那么在仿真器中就可以直接操作共享文件夹中的文件。
这时候,就可以把其他和程序相关的文件拷贝到需要的地方。下面以一个XML文件为例。这个XML和程序的可执行程序在一个目录下,用来保存程序的设置参数。XML文件在电脑上,程序中通过读取可执行程序所在的目录来指定XML文件的目录。但是很不幸,仿真器在运行过程中,认为EXE可执行程序在“program files//项目名称”这个目录下,这个目录是仿真器中的路径,肯定是不会找到XML文件的。这就需要把XML文件也放置到“program files//项目名称”目录下面去。
在仿真器中点击“开始-资源管理器”,打开后选择“Storage Card”。在这个里面通过目录-文件的方式选中文件,然后点击下面的“菜单-编辑-复制”,将文件复制出来。
然后通过仿真器界面上的文件-目录功能,找到“我的设备-program files-项目名称”,进入以项目名称为名称的目录,通过“文件-编辑-粘帖”,把文件拷贝到可执行程序所在的运行目录下。
5 移动数据库
在这个项目中,使用的是微软的SQL SERVER Mobile Compact Editor 3.5。其他的数据库还没有使用过。仅仅就SQL SERVER Mobile Compact Editor 3.5的使用方法说明。
5.1 获得SQL SERVER Mobile Compact Editor 3.5
SQL SERVER Mobile Compact Editor 3.5可以直接从微软的网站上下载,网址为:http://www.microsoft.com/downloads/details.aspx?familyid=7849B34F-67AB-481F-A5A5-4990597B0297&displaylang=zh-cn
下载后在电脑上进行安装。默认安装到C:/Program Files/Microsoft SQL Server Compact Edition下。
5.2 移动数据库的选择
SQL SERVER Mobile Compact Editor 3.5版本,4.0版本都有,读者按自己需求下载,增加了设置数据库文件密码的功能。也可以使用其他版本的SQL SERVER MOBILE替代。
5.3 Sql server ce数据库中建立数据表
Sql server ce 3.5中建表可以通过使用 Query Anylazer 3.5手动建,也可以导入sql脚本进行建表。建表的时候需要注意字段类型和sql server中的字段类型并不相同,在sql server中能使用的字段类型,在sql server ce中可能无法使用,在建表的过程中需要注意这点。
5.4 在智能设备上部署sql server ce 3.5数据库
如果使用PDA访问SQL SERVER CE,注意Windows CE中不包含数据库引擎,需要额外的安装三个包。如果不安装这三个包,程序将无法连接和读取SQL SERVER CE数据库。
这三个包在sql server ce安装目录下,具体的是C:/Program Files/Microsoft SQL Server Compact Edition/v3.5/Devices/wce500/armv4i目录下面,包括:
sqlce.dev.CHS.ppc.wce5.armv4i.CAB
sqlce.repl.wce5.armv4i.CAB
sqlce.wce5.armv4i.CAB
将这三个文件拷贝到仿真器上,并安装。
安装后,PDA的程序中增加了: Query Anylazer 3.5
当不用移动数据库时,可以卸载这程序。
6 智能设备连接操作PC数据库
智能设备操作PC数据库,有两种方式:
一种是通过无线连接,一种是通过USB连接到电脑上。无线连接在普通环境下使用普遍性不足,很多情况下是通过USB数据线进行连接的。使用USB数据线连接,PC电脑上需要安装同步工具,目前使用较多的为微软的ActiveSync,下载地址是;
http://www.microsoft.com/downloads/details.aspx?FamilyID=cabdb564-ae94-4c02-abbc-cdece61231d4&DisplayLang=zh-cn
智能设备和PC同步后,就可以把智能设备看作一台电脑,可以连接数据库。
7 数据库连接字符串
7.1 Sql server ce
在工程中增加引用,引用System.data.sqlserverCe
类中使用命名空间:System.data.sqlserverCe
数据库链接类名、命令类名及记录集类名中都使用包含Ce的类。
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
using System.Data.SqlClient;
namespace GPSDataReader
{
public partial class frmDamUp : Form
{
SqlCeConnection ConnMobile;
SqlCeCommand command;
public frmDamUp()
{InitializeComponent();}
private void frmDamUp_Load(object sender, EventArgs e)
{
//获取可执行程序所在目录和数据库文件
string sFilePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "";
//连接sql server Mobile数据库的连接字符串
string ConnStr = "Data Source=" + sFilePath + ";Persist Security Info=False;password=admin;";
//建立链接
ConnMobile = new SqlCeConnection(ConnStr);
try
{ConnMobile.Open();}
catch (Exception ex)
{
MessageBox.Show("不能正确连接移动数据库!" + ex.Message);
this.Close();
}
command = new SqlCeCommand();
command.Connection = ConnMobile;
string sqlstr = "select * from DamInfo where IsUP='1'";
command.CommandText = sqlstr ;
SqlCeDataReader rs = command.ExecuteReader();
while (rs.Read())
{
ListViewItem lv_Item = new ListViewItem();
lv_Item.Text = rs["RSID"].ToString();
lv_Item.SubItems.Add(rs["RSNM"].ToString());
lv_Item.SubItems.Add(rs["DMPRV"].ToString());
lv_Item.SubItems.Add(rs["DMCT"].ToString());
lv_Item.SubItems.Add(rs["DMTW"].ToString());
lv_Item.SubItems.Add(rs["EL"].ToString());
lv_Item.SubItems.Add(rs["NL"].ToString());
lv_Item.SubItems.Add("未上传");
lv_DamInfo.Items.Add(lv_Item);
}
rs.Close();
if (lv_DamInfo.Items.Count == 0)
{
MessageBox.Show("没有需要上传的数据!");
this.Close();
}
}
7.2 智能设备连接PC上的SQL SERVER
智能设备不支持OLEDB连接方式,只能使用SQLSERVER .Net的连接方式。所以增加System.data.SqlClient引用。在需要连接的类中增加System.data.SqlClient命名空间。
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;
using System.Data.SqlClient;
private void b_Down_Click(object sender, EventArgs e)
{
string sqlstr;
string Connstr = "user id=sa;password=2centit13;initial catalog=DamBase;Server=" + ConfigInfo.IP + ";Connect Timeout=30";
SqlConnection Conn = new SqlConnection(Connstr);
try
{Conn.Open();}
catch (Exception ex)
{
MessageBox.Show("无法连接到指定的PC数据库!" + ex.Message);
return;
}