使用语言为C#,PC机上服务器为SQL SERVER 2000,PDA数据库为SQL Server Mobile Edition 2005.使用开发工具为Visual Studio 2005.
在C#中引用的为3.0的包.System.Data.SqlServerCe.Sqlceca.dll.
配置IIS虚拟目录.指向C:\Program Files\Microsoft SQL Server 2005 Mobile Edition\Server,虚拟目录名为SQLCE.权限为可以读取.匿名用户登陆.
在PC机中IE输入http://localhost/sqlce/sqlcesa30.dll显示SQL Server Mobile Server Agent 3.0
在PDA中IE输入http://192.168.100.76/sqlce/sqlcesa30.dll显示SQL Server Mobile Server Agent 3.0.
然后,在SQL SERVER 2000中建立库.Test,在其中建立表student.ID为表student主键.
编写如下代码.
public SqlCeConnection GetConn()
{
SqlCeConnection conn = null;
try
{
String dbpathname = @"son.sdf";
if (File.Exists(dbpathname))
File.Delete(dbpathname);
string strCon = "Data Source =" + dbpathname;
SqlCeEngine engine = new SqlCeEngine(strCon);
engine.CreateDatabase();
engine.Dispose();
}
catch (SqlCeException e)
{
ShowErrors(e);
}
return conn;
}
然后PULL数据.代码如下:
SqlCeRemoteDataAccess rda = null;
//SQL Server所在的主机的IP
string remoteIP = "192.168.100.76";
//SQL Server中的数据库,名为ABC
string remoteDB = "Test";
//数据库ABC的用户和密码
string user = "sa";
string pwd = "sa123456";
//本地sqlce数据库的路径和名字,该数据库存在于win CE系统下.
string dbPathName= @"\son.sdf";
string localDB = dbPathName;
//本地sqlce数据库密码
string localPwd = "";
//要同步的数据表名
string table = "student";
//用于连接SQL Server数据库的字符串
string rdaOleDbConnectString = @"Provider=SQLOLEDB;Data Source=" + remoteIP +
";Initial Catalog=" + remoteDB + ";User Id=" + user + ";Password =" + pwd;
//连接本地sqlce数据库的字符串,作为SqlCeRemoteDataAccess对象的一个参数
string localConnectString = @"Data Source=" + localDB + ";Password=" + localPwd;
try
{
rda = new SqlCeRemoteDataAccess();
//由于虚拟目录sqlce设置的访问方式为匿名,所以登陆名和密码可以忽略
rda.InternetLogin = "";
rda.InternetPassword = "";
rda.InternetUrl = "http://" + remoteIP + "/sqlce/sqlcesa30.dll";
rda.LocalConnectionString = localConnectString;
//执行同步,SQL SERVER同步到sqlce
//参数RdaTrackOption.TrackingOn指示SQL Server Mobile 跟踪对所提取表的所有更改。
rda.Pull(table, "SELECT ID,NAME,AGE FROM ", rdaOleDbConnectString, RdaTrackOption.TrackingOn, "ErrorTable");
}
catch (SqlCeException ex)
{
//Use you own Error Handling Routine.
ex.ToString();
}
finally
{
//Dispose of the RDA Object.
rda.Dispose();
}
}
数据库son.sdf可以成功建立,但是PULL不了数据.
错误信息ex为{""}
问:PC机上的库.Test是否需要发布. IIS的匿名用户是否需要添加到SQL SERVER用户中.
小弟刚接触,SQL CE,已经查找了3天方法.实在解决不了.望大哥们多多帮助.