• 美文
  • 文章
  • 散文
  • 日记
  • 诗歌
  • 小说
  • 故事
  • 句子
  • 作文
  • 签名
  • 祝福语
  • 情书
  • 范文
  • 读后感
  • 文学百科
  • 当前位置: 柠檬阅读网 > 作文 > 正文

    常用数据库 用RDA方式同步SQLCE与SQLSERVER数据库

    时间:2020-03-06 09:43:54 来源:柠檬阅读网 本文已影响 柠檬阅读网手机站

    摘要:本文通过一个简单实例,介绍了在.net环境下,如何利用RDA(Remote Data Access)方式进行SQLCE与SQL SERVER之间的数据库同步,并且如何使用SQLCE的相关类创建和访问SQLCE数据库。

    关键词:RDA, SQLCE, SQL SERVER 

    1 引言

    SQL Server CE(SQLCE)是一款运行在Windows CE设备环境下的轻量级本地数据库引擎,为移动设备上偶尔连接的数据访问提供了解决方案。例如,工商管理人员在执行巡查任务前,可以用Win CE移动设备把台式计算机中的数据库(SQL Server)拷到Win CE的数据库(SQLCE)上;在执行任务时,可以在移动设备上修改记录;完成任务后,可以把移动设备上的数据库上传到台式计算机中的数据库,使这两个数据库之前的数据保持同步。Remote Data Access(RDA)方式为Win CE移动设备上SQLCE与SQL Server数据库之间的同步提供了快速而简便的解决方案。本文将通过一个实例演示如何使用RDA方式同步数据库。

    2 开发环境

    本文的实例程序开发环境如下:Microsoft Visual Studio 2005,编程语言C#,数据库采用

    SQL Server2000,SQL Server Mobile Edition 2005(SQLCE3.0),程序测试运行环境为Windows CE5.0(使用vs上自带的Pocket PC 2003 SE 仿真程序)。

    SQL Server2000必须安装SP3补丁,SQL Server Mobile Edition 2005的安装文件在Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0目录下,文件名为Sqlce30setupcn.msi。安装SQL Server Mobile Edition 2005后,使用该程序菜单中的“配置Web同步向导”创建一个别名为“sqlce3”的虚拟目录,访问方式为“匿名”。注意:创建虚拟目录后,还必须打开IIS,把虚拟目录“sqlce3”的访问权限增加“写入”权限,否则RDA将同步失败。

    3 程序的实现

    运行SQL SERVER2000服务器管理器。打开企业管理器,创建一个新数据库,名为“ABC”,在“ABC”下创建一个数据表,表名为:“person”,表字段如下图所示:

    图1  person表

    运行Microsoft Visual Studio 2005,创建一个新项目,项目类型为“Visual C# ->智能设备->Windows CE5.0->设备应用程序”,项目名为“RDA_TEST”。接着是程序的编写

    第一步,需引入两个名命空间:System.IO和System.Data.SqlServerCe。接着在windows CE设备上创建一个空的本地SQLCE数据库,代码如下:

     

     //创建一个空的本地数据库文件,

                    string dbPathName = @"\rda.sdf";

                    if (File.Exists(dbPathName))

                        File.Delete(dbPathName);

                    string strCon = "Data Source =" + dbPathName + "; Password=";

                    SqlCeEngine engine = new SqlCeEngine(strCon);

                    engine.CreateDatabase();

                    engine.Dispose(); 


    代码中使用了SqlCeEngine类,用于创建SQLCE数据库,注意创建SqlCeEngine对象时所使用的参数,此参数为一个数据库连接字符串,注意其格式。

    第二步,用SQL SERVER2000中的数据库同步SQLCE数据库。代码如下: 

                     SqlCeRemoteDataAccess rda = null;

    //SQL Server所在的主机的IP

                    string remoteIP = tbRemoteIP.Text.Trim();

                    //SQL Server中的数据库,名为ABC

                    string remoteDB = "ABC";

                    //数据库ABC的用户和密码

                    string user = "sa";

                    string pwd = "sa";

                    //本地sqlce数据库的路径和名字,该数据库存在于win CE系统下.

    // dbPathName= @"\rda.sdf";

                    string localDB = dbPathName;

                    //本地sqlce数据库密码

                    string localPwd = "";

                    //要同步的数据表名

                    string table = "person";

                    //用于连接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;

                    rda = new SqlCeRemoteDataAccess();

    //由于虚拟目录sqlce3设置的访问方式为匿名,所以登陆名和密码可以忽略

                    rda.InternetLogin = "";

                    rda.InternetPassword = "";

                    rda.InternetUrl = "http://" + remoteIP + "/sqlce3/sqlcesa30.dll";

                    rda.LocalConnectionString = localConnectString;

                    //执行同步,SQL SERVER同步到sqlce

                    //参数RdaTrackOption.TrackingOn指示SQL Server Mobile 跟踪对所提取表的所有更改。

                    rda.Pull(table, "Select * from " + table, rdaOleDbConnectString, RdaTrackOption.TrackingOn);


    RDA同步数据库主要是使用SqlCeRemoteDataAccess类。从别的数据库更新本地SQLCE数据库,使用SqlCeRemoteDataAccess类的Pull方法,该方法中的参数RdaTrackOption.TrackingOn,可以让SQLCE跟踪对本地数据表的更改,从而可以用SQLCE同步SQL SERVER数据库。

        第三步,对SQLCE数据库进行修改,这一步只是为了演示用SQLCE同步SQL SERVER数据库而作准备。代码如下:

                    const string strDatabase = @"Data Source = \rda.sdf";

                    SqlCeConnection con = null;

     con = new SqlCeConnection(strDatabase);

                    con.Open();

                    //修改现有记录

                    string strUpdate = "update person set age=18 where name = "王一"";

                    SqlCeCommand cmd = new SqlCeCommand(strUpdate, con);

                    cmd.ExecuteNonQuery();

                    cmd.Dispose();

                    //插入一条新记录

                    strUpdate = "insert into person(card_id,name,age) values(10003,"李四",23)";

                    cmd = new SqlCeCommand(strUpdate,con);

                    cmd.ExecuteNonQuery();

                    cmd.Dispose();

    第四步,用SQLCE同步SQL SERVER2000数据库,也就是把SQLCE数据库修改过的记录更新到SQL SERVER2000数据库上。代码跟第一步所列代码基本一致,但只把第一步代码的最后两行关于pull方法的代码,改为push方法代码, 代码如下: 

                    相关热词搜索: 同步 方式 数据库 RDA SQLSERVER

    • 文学百科
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章