1。首先,如果没有安装IIS,需要先安装IIS。XP使用安装盘来安装。
如果环境是windows 2008的IIS7,在安装下面的时候会出现会要首先安装(IIS 6.0) backward compatibility components的错误消息,解决方法是要先安装IIS 6 Management Compatibility,请参考:
http://support.microsoft.com/default.aspx?scid=kb;en-us;955966&sd=rss&spid=2855
2。下载并安装SQL Server Compact 3.5 Service Pack 1 Server Tools。
下载地址是
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=fa751db3-7685-471b-ac31-f1b150422462#filelist
3。配置SQL Server Compact 3.5 Service Pack 1 Server Tools。
在开始菜单程序里运行SQL Server Compact 3.5 下面的Configure Web Synchronization Wizard(配置web同步向导)。
在验证方式上,选择上“基本验证”。注意如果对IIS服务器代理配置为使用基本身份验证或集成身份验证,则使用RDA对象时必须指定 InternetLogin 和 InternetPassword 属性。
4。在移动设备上安装sqlserver compact 3.5。
分为手动安装和自动安装。
自动安装:
如果使用 Microsoft Visual Studio 生成一个使用 Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5)并与 .NET 连接的应用程序,则当您第一次在设备上部署该应用程序时,会自动在设备上安装 SQL Server Compact 3.5 引擎。
手动安装:
可以通过手动将 .cab 文件复制到设备上,在设备上安装 SQL Server Compact 3.5。 如果是生成本机应用程序,则必须手动复制 .cab 文件。
请参考以下的文章: 如何选择正确的SQL Server Compact安装包
5。在SQL Server服务器上建立数据库mymoney供测试用,其中包含一个表record。字段信息是:
id int notnull pk 要使用RDA,必须对表设置主键
action varchar(50) notnull
cost money notnull
6。编程实现RDA。
用VS2008编写一个移动设备应用程序,以下是在Form中实现的代码,以下代码在IPAQ上运行成功。
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;
namespace SmartDeviceProject1
{
public partial class Form1 : Form
{
// DataSource中的n28201是IIS服务器和Sql Server的主机名。
private string sCon = @"Provider=SQLOLEDB;Data Source=n28201;"
+ @"Initial Catalog=mymoney;"
+ @"integrated security=SSPI;Persist Security Info=False";
//test是虚拟目录名
private string internetUrl = @"http://n28201/test/sqlcesa35.dll";
private string localConnectionString = @"Data Source=/My Documents/mymoney.sdf";
//IIS使用的是基本身份验证,需要提供以下Windows用的用户名和密码。
private string internetLogin = "sa";
private string internetPassword = "sa";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// First, ensure you have an empty local SQL CE database.
if (System.IO.File.Exists(@"/My Documents/mymoney.sdf"))
{
System.IO.File.Delete(@"/My Documents/mymoney.sdf");
}
// Create new database.
SqlCeEngine eng = new SqlCeEngine(localConnectionString);
eng.CreateDatabase();
using (SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
{
rda.InternetUrl = this.internetUrl;
rda.InternetLogin = this.internetLogin;
rda.InternetPassword = this.internetPassword;
rda.LocalConnectionString = localConnectionString;
try
{
rda.Pull("record", "SELECT * FROM record",
sCon, RdaTrackOption.TrackingOn, "rdaRecordErrors");
}
catch (SqlCeException sqlCeEx)
{
MessageBox.Show(sqlCeEx.ToString());
return;
}
finally
{
rda.Dispose();
}
MessageBox.Show("RDA Pull Done!");
}
}
private void button2_Click(object sender, EventArgs e)
{
using (SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
{
rda.InternetUrl = this.internetUrl;
rda.InternetLogin = this.internetLogin;
rda.InternetPassword = this.internetPassword;
rda.LocalConnectionString = localConnectionString;
try
{
rda.Push("record", this.sCon);
}
catch (SqlCeException sqlCeEx)
{
MessageBox.Show(sqlCeEx.ToString());
return;
}
finally
{
rda.Dispose();
}
}
MessageBox.Show("RDA Push Done!");
}
private void button4_Click(object sender, EventArgs e)
{
using (SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess())
{
rda.InternetUrl = this.internetUrl;
rda.InternetLogin = this.internetLogin;
rda.InternetPassword = this.internetPassword;
rda.LocalConnectionString = localConnectionString;
try
{
rda.SubmitSql("UPDATE record set cost=888 where id=1", this.sCon);
}
catch (SqlCeException sqlCeEx)
{
MessageBox.Show(sqlCeEx.ToString());
return;
}
finally
{
rda.Dispose();
}
}
MessageBox.Show("RDA SubmitSQL Done!");
}
private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
6。在XP上安装ActiveSync4.5。
7。将移动设备用USB连接到XP主机,使用VS2008将项目发布到移动设备,运行成功。
pull运行成功后,在移动设备中的mymoney.sdf中建立了rdaRecordErrors和record两个表。