65.9K
CodeProject 正在变化。 阅读更多。
Home

带 SQL CE 的 Pocket PC

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.76/5 (26投票s)

2004 年 1 月 30 日

CPOL

2分钟阅读

viewsIcon

254486

downloadIcon

600

本文演示了如何在远程数据访问 (RDA) 的帮助下使用 SQL CE 和 SQL Server 2000。

引言

本文介绍了如何使用 VB.NET 使用 SQL CE 以及如何将数据从 SQLCE (Pocket PC) 传输到在您的桌面系统中运行的 SQL Server 2000。

客户端要求

  1. 配备 Microsoft Windows 的 Pocket PC
  2. Microsoft .Net compact Framework 1.0 (PocketPC 中的默认值)

服务器要求

  1. MS SQL Server 2000 with SP3
  2. MS SQL CE 2000 with SP3
  3. 创建名为 D1Temp 的数据库并执行脚本 "D1temp SQLScript.sql"

背景

这项工作背后的基本思想是即时更新任何信息。 即,如果我从一个地方旅行到另一个地方,如果我看到
或知道一些有趣的信息。 如果我想将这些信息存储到我的数据存储中,那么只需要一个 Pocket PC 和互联网连接。

在飞行中,我可以记下所有信息,并将它们传输到我的桌面,该桌面运行在世界的某个地方。 我不会担心我的 Pocket PC 的内存大小,因为所有信息都发布到远程数据库。

您可以将此作为模板,并创建您自己的移动设备应用程序。

使用代码

下载源代码,您可以在其中找到一个名为 SQLSCRIPT.sql 的 SQL 脚本。 创建一个数据库(我使用了 D1Temp)并运行该脚本。 打开 Config.xml 并正确指定

  • 数据库服务器
  • DatabaseName
  • 数据库登录
  • 数据库密码
  • SQLCEURL
  • IIS登录
  • IIS密码
如果您未正确配置此 XML 文件,则无法获得预期的结果。 注意:确保您已正确配置您的 SQLCE 虚拟文件夹和 IIS。 Database.vb 文件包含所有与数据库相关的连接和查询处理。 以下代码用于连接到 Host 数据库并将数据填充到 SQL CE 中
'Connect to SQL 2000
Dim rdaOleDbConnectString As String = _
  "Provider=sqloledb; Data Source=" & _
  oDBConfig.DatabaseServer & ";Initial" & _
  " Catalog=" & oDBConfig.PublisherDB & ";User Id=" & _
  oDBConfig.PublisherLogin & ";Password=" & _
  oDBConfig.PublisherPassword

  'create an RDA object to connect to the SQL Server CE 
  'database on the mobile device: 
  'Initialize the RDA object.
  Try
    rda = New SqlCeRemoteDataAccess

    rda.InternetUrl = oDBConfig.SqlCeUrl
    rda.LocalConnectionString = _
    "Provider=Microsoft.SQLSERVER." & _
    "OLEDB.CE.2.0;Data Source=" & oDBConfig.LocalDBLocation & _
    oDBConfig.LocalDBName

    rda.InternetLogin = oDBConfig.IISLogin
    rda.InternetPassword = oDBConfig.IISPassword

    'Pull from SQL 2000
    rda.Pull("MyFavourite", "Select * from MyFavourite", _
    rdaOleDbConnectString, _
    RdaTrackOption.TrackingOnWithIndexes)
    .....        

将详细信息从 PDA 传回 SQL 2000 也与上述代码相同,除了 rda.Pull。 这里我们必须使用 rda.push :-

   rda.Push("MyFavourite", rdaOleDbConnectString, _
   RdaBatchOption.BatchingOn)        
并且我还添加了一些用于将数据读入 DataReader 和执行 SQL 语句的函数。

关注点

当我尝试使用模拟器时,大多数时候它显示错误“80072EFD 请求将数据发送到运行 IIS 的计算机失败,有关更多信息,请参阅 HRESULT”,即使一切都配置正确。 如果我使用我的 pocket PC 而不是模拟器,它会运行良好。 之后,我经常通过我的 IE 运行 SQL CE 虚拟文件夹路径 "http://sys1/sqlce/sscesa20.dll"。 有时它有效,但大多数时候它无效。 如果此技巧失败,那么我使用此逻辑,即我将 IISLogin 从“everest/rasheed”更改为“everest\rasheed”(仅更改斜杠),如果下次失败,我将将 IISLogin 从“everest\rasheed”更改为“everest/rasheed” 你不会相信,但它完美地工作了。 我不知道“斜杠”的秘密 ;-)

历史

  • 第一个版本 1.0
© . All rights reserved.