当前位置:K88软件开发文章中心编程语言SQLSQL01 → 文章内容

SQL Server Compact Edition 与SQL Server 2005数据同步之请求和推送

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2019-1-3 1:48:39

:2010-08-09 11:27:00

一、前言

相信有Windows CE 或 Windows Mobile 开发经验的人员都或多或少要对移动终端的数据进行推送至SQL Server或是向SQL Server请求数据。但是用什么方法进行呢?相信大家立即会想到Microsoft ActiveSync,这也是个不错的选择,但这个方法只是针对文件的Copy、Paste、Delete等操作,还是有一定的局限性。另外大家也会想到经TCP/IP通过Socket或Web Service等进行数据同步,直接向SQL Server请求和推送数据,但是这个难度就在于Socket或Web Service的开发了。本文将介绍通过“RDA(远程数据访问)”方法,给大家参考,只要少少代码和设置便可以轻松实现了。

二、创建快照文件夹

1打开资源管理器中,在C盘下创建一个名为snapshot的新文件夹。右键单击snapshot文件夹,然后选择共享和安全。

2 在共享选项卡,选择共享该文件夹,然后单击权限。

3 在共享权限页中,单击添加。

4 单击高级,单击立即查找,选择登陆用户名,单击确定。

5 在snapshot的权限中,为刚才分配的用户选中更改和读取权限,然后单击确定。

6选择安全选项卡,单击添加,添加刚才的用户到用户列表中。

7选择用户,分配以下权限:

-读取和执行

-列出文件夹目录

-读取

-写入

8单击确定关闭快照属性窗口。

9关闭 Windows 资源管理器。

注:如果你的电脑启用了简单文件夹共享,请选择工具,单击文件夹选项,在查看选项页中去除简单文件夹共享。这样才看到第2步以下的内容。

三、配置SQL Server Compact的Web同步。

如果你的PC上没有安装Microsoft SQL Server 2005 Compact Edition Server Tools,请到http://www.microsoft.com/downloads/details.aspx?FamilyId=4E45F676-E69A-4F7F-A016-C1585ACF4310&displaylang=zh-cn 进行下载。

1单击开始->所有程序-> Microsoft SQL Server 2005 Compact Edition->配置 Web 同步向导。

2在欢迎使用配置 Web 同步向导页上,单击下一步。

3在订阅服务器类型页上,选择SQL Server Compact Edition,单击下一步。

4在Web 服务器页中,选择创建新的虚拟目录,然后选择默认网站。单击下一步。剩余的步骤用于创建新的虚拟目录。

5在虚拟目录信息页上,在别名文本框中,输入虚拟目录名称。在路径文本框中设置虚拟目录的本地文件路径(可默认),然后单击下一步。

6在安全通信页上,默认选择不需要使用安全通道(SSL)。用户将通过以 http:// 开头的 URL 字符串访问您的虚拟目录,然后单击下一步。

7在客户端身份验证页上,选择将对客户端进行身份验证。要求输入用户名和密码,然后单击下一步。

8在“需经身份验证的访问”页上,选择要使用的身份验证类型,这里选择集成 Windows 身份验证。然后单击下一步。

9在目录访问页上,添加登陆用户权限,然后单击下一步。

10在快照共享访问页上,选择每第一步中的快照,然后单击下一步。

11单击完成,完成创建并配置虚拟目录后,单击关闭。 注:你的PC机上必需安装有IIS

四、建立测试数据库

1 打开SQL Server Management Studio,新建查询,输入以下内容:

USE master;
GO
IF EXISTS (SELECT * FROM sys.sysdatabases WHERE name = 'SQLMobile')
BEGIN
    DROP Database SQLMobile;
END
GO
CREATE DATABASE SQLMobile;
GO
USE SQLMobile;
GO
CREATE TABLE Test (ID INTEGER IDENTITY (1,1)
CONSTRAINT pkID PRIMARY KEY, Test NVarChar (50));
GO
insert into Test (Test) values('Test1')
insert into Test (Test) values('Test2')
GO

打开Windows CE 的Query Analyzer 在路径\Program Files\SQLMobile下建立命名为sqlmobile的测试数据库

五、 建立示例程序

1 打开Microsoft Visual Studio 2005,建立Windows CE的Device Application应用程序,命名为SQLMobile。

2 删除菜单,添加两个button,并命名为Push(推送)和Pull(请示),闰添加单击事件。

3在程序中添加System.Data.SqlServerCe的引用,并Using到程序中。

4在Push的单击事件中添加以下代码:

string ConnectString = @"Provider=SQLOLEDB; Data Source=***; Initial Catalog=SQLMobile; User ID=sa;Password = ***";
SqlCeRemoteDataAccess rda = null;
try
{
rda = new SqlCeRemoteDataAccess(@"http://192.168.1.3/SQLMobile/sqlcesa30.dll", @"Data Source=\Program Files\sqlmobile\test.sdf");
rda.InternetLogin = "***";
rda.InternetPassword = "***";
rda.Push("Test", ConnectString, RdaBatchOption.BatchingOff);
MessageBox.Show("Push OK.");
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
rda.Dispose();
}
 

5 在Pull的单击事件中添加以下代码:

string ConnectString = @"Provider=SQLOLEDB; Data Source=***; Initial Catalog=SQLMobile; User ID=sa;Password = ***";
SqlCeRemoteDataAccess rda = null;
try
{
rda = new SqlCeRemoteDataAccess(
@"http://192.168.1.3/SQLMobile/sqlcesa30.dll",
"***",
"***",
@"Data Source=\Program Files\sqlmobile\test.sdf ");
rda.Pull("Table_1", "SELECT * FROM Table_1", ConnectString,
RdaTrackOption.TrackingOnWithIndexes);
MessageBox.Show("Pull OK.");
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
rda.Dispose();
}
 

6将程序下载到移动终端机上,进行测试。

六、测试

打开SQLMobile程序,点击Pull,出现MessageBox“Pull OK.”即已经将表Test请求到了本地sqlmobile.sdf数据库中。

在sqlmobile.sdf,添加两行数据后,点击Push,出现MessageBox“Pusk OK.”,即已经将新增的两行数据添加到了SQL Server的Test表中。

七、问题汇总

1 A request to send data to the computer running IIS has failed。For more information, see HRESULT.这些问题请查看你的IIS配置,用户名或密码。

2 Failure to Open SQL Server with given connect string, […..]

此问题请查看你的防火墙设置和你的SQL Server用户名和密码。

 

3The Local Table Name parameter is already specified. [Table name = Test]

此问题是因为windows CE中已经存在名为Test的表,将此表删除即可。

4 SQL Mobile encountered problems when opening the database.

此问题是你的sqlmobile.sdf 数据库密码错误,如果有密码请更改连接字符串为:Data Source=\Program Files\SQLMobile\sqlmobile.sdf;Password=**

需要source的朋友请电邮至niyingny@hotmail.com

原文出处:http://blog.csdn.net/niying/archive/2008/06/24/2582017.aspx



SQL Server Compact Edition 与SQL Server 2005数据同步之请求和推送