1.开发环境:开发工具和服务器在同一台机器上,windows xp sp3 +iis,sql server 2005 sp4 + sql server compact 3.5 server tool sp2 ,VS2008,wce5.0+sql server compact 3.5。
2.配置虚拟名录,开始》程序》sql server compact 3.5》配web同步向导,别名为sqlce35。其他配置请参考相关文档。
3.RDA 远程数据同步,
保证本地数据库存在,目录是/Micro_sd/test.sdf。
pull:先在sql server 2005 中建立数据库和表,将要被移动数据设备拉到本地,如果表已在本地存在,拉动作会报错。假设数据库是DSHG,表名是operator。超级管理员sa,密码是:123456.
在VC#2008新建项目,添加引用using System.Data.SqlServerCe,加入以下代码
private void push_Click(object sender, EventArgs e)
{
string rdaOleDbConnectString = @"Provider=SQLOLEDB; Data Source=服务器机器名; Initial Catalog=DSHG; User Id=sa; Password = 123465";
// Initialize RDA Object
SqlCeRemoteDataAccess rda = null;
try
{
rda = new SqlCeRemoteDataAccess(
"http://192.168.1.118/sqlce35/sqlcesa35.dll",
"Administrator",
"094182",
"Data Source=//Micro_sd//test.sdf");
rda.Pull("operator", "SELECT * FROM operator", rdaOleDbConnectString,
RdaTrackOption.TrackingOn, "ErrorTable");// 成功
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
rda.Dispose();
}
}
4.push 推动作,把在本地的改动反馈给服务器。
string rdaOleDbConnectString = @"Provider=SQLOLEDB; Data Source=服务器机器名; Initial Catalog=DSHG; User Id=sa; Password = 123465";
// Initialize RDA Object
SqlCeRemoteDataAccess rda = null;
try
{ rda = new SqlCeRemoteDataAccess(
"http://192.168.1.118/sqlce35/sqlcesa35.dll",
"Administrator",
"094182",
"Data Source=//Micro_sd//test.sdf");
rda.Push("operator", rdaOleDbConnectString, RdaBatchOption.BatchingOn);//成功,可以提交
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
rda.Dispose();
}
}
5.SubmitSql :提交sql 语句
string rdaOleDbConnectString = @"Provider=SQLOLEDB; Data Source=服务器机器名; Initial Catalog=DSHG; User Id=sa; Password = 123465";
// Initialize RDA Object
SqlCeRemoteDataAccess rda = null;
try
{ rda = new SqlCeRemoteDataAccess(
"http://192.168.1.118/sqlce35/sqlcesa35.dll",
"Administrator",
"094182",
"Data Source=//Micro_sd//test.sdf");
rda.SubmitSql(" insert into operator (id,name,pwd) values('10002','张朋','123')",
rdaOleDbConnectString);//成功
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message);
}
finally
{
rda.Dispose();
}
}