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同步向导)。

  • 在订阅类型时选择“SQL Server Compact ”。
  • 选择“建立一个新的虚拟目录”。
  • 选择“复制Sql server代理到目录中”。
  • 在客户端身份验证向导时 ,选择“对客户端进行身份验证,要求输入用户名和密码”。
  • 在验证方式上,选择上“基本验证”。注意如果对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两个表。

posted on 2012-07-05 17:27  Abner zhou  阅读(237)  评论(0编辑  收藏  举报