SQLCE数据库的使用

SQLCE数据库的使用
发表时间:2010-12-26     

SQLCE简介

       微软推出SQL SEVER数据库,功能强大,使用方便。其针对嵌入式设备的版本为SQL SEVER FOR CE,,简称SQLCE

       SQLCE 3.0的版本可以到微软官方网站下载,也有新一些的3.5的版本,不过好像3.0的版本用的较多,网上的一些资料例子也大多针对3.0的版本。为了开发更方便些,建议用3.0的版本。另外针对SQLCE的程序开发,工具建议用VS2005,同样的原因,多数与WinCE 5.0及SQLCE3.0的相关例程和文章都是用VS开发的。

 

主要功能

       SQLCE主要支持的功能如下:

1>     压缩的数据库引擎和强大的查询优化器

2>     支持多用户访问

3>     支持合并复制与远程数据访问(RDA

4>     SQLCE 3.0工具与Microsoft SQL Sever 2005集成

5>     VS2005集成

6>     安装与连接向导

7>     在台式机上创建SQLCE3.0数据库的功能。

8>     用于SQLCE3.0System.Data.SqlServerCe)的.NET Compact Framework数据访问接口

9>     支持ADO.NETOLE DB Provider for SQLCE 3.0

10>  SQL语法的子集

(数据库技术也是一门由来已久的技术,如果想要充分理解其功能,还要查阅相关的数据资料)

 

SQLCE 3.0安装

·客户端安装

       安装文件可以到微软官网上下载,如果电脑上安装了VS2005软件,那么可以在其安装目录中找到。路径如下:C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0\wce500\armv4i ,其中包含9CAB安装文件,分为3组,分别针对PDA,智能手机和WinCE 5.0。如下图:

(选中的3个是针对WinCE 5.0的安装文件)

       将这3个文件拷贝到WinCE设备上,依次安装。(我采取的安装顺序是sqlce30.wce5,armv4i.CAB , sqlce30.repl.wce5.arm4i.CAB , sqlce30.dev.CHS.wce5.arm4i.CAB)。

其中sqlce30.wce5,armv4i.CABSQLCE 3.0的核心安装文件,sqlce30.repl.wce5.arm4i.CAB主要提供复制,订阅等相关服务,sqlce30.dev.CHS.wce5.arm4i.CAB是安装一个SQLCE查询分析器。

·服务器端安装

       如果需要SQLCE3.0应用程序在PCMicrosoft SQL SeverSQLCE数据库间交换数据,则需安装如下软件:

1>     Microsoft Internet信息服务(IIS

2>     SQL Sever 2005 SQL Sever 2000

3>     SQLCE3.0服务器工具

注:SQLCE3.0服务器工具的安装文件默认位于:C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0,名称为:Sqlce30setupcn.msi

其中SQL Sever 2000在我自己的电脑上有这个破解版的安装包和SP4,不过安装VS2005的时候,SQL Sever 2005已经一并安装完毕了。Microsoft Internet信息服务(IIS),这个的安装在下一篇文章中说明,如果不安装这个,SQLCE3.0服务器工具是安装不上的。



Microsoft Internet 信息服务(IIS)安装步骤

·获取IIS的安装包。如IIS5.1,我在“CSDN论坛”上传了这个安装包,是我经过测试的版本。下载地址:http://download.csdn.net/source/1965586

将它下载下来,解压到某个目录中。

·点击“开始”——>“设置”——>“控制面板”——>“添加或删除程序”

选择“添加/删除Windows组件(A)”,弹出一个对话框,如下图:

如下图:找到“附件和工具”,双击。



如上图,将“附件”“游戏”勾掉,然后点击确定。

然后点击下一步,出现下图:

点击完成。

·再次打开“添加/删除Windows组件(A)”,如下图,勾选Internet 信息服务(IIS),然后点击下一步。

会出现如下提示:

点击“确定”,然后看下图:

点击浏览,找到IIS5.1解压的目录,然后打开,如下图:

然后点击确定。

依次这样,每次出现如下图的提示,都去浏览到IIS5.1解压的目录,直至安装完成即可。

如下图,点击“完成”,安装结束。





 

数据库开发环境简述

·客户端环境

客户端环境由用户的应用程序和SQLCE组成,SQLCE中包括很多工具,查询分析器,数据库存储引擎,API接口函数等等。

àSQLCE数据库引擎:可以管理所支持设备上的SQLCE数据存储区,可以跟踪所插入,修改,删除的数据库记录。在使用复制或远程数据访问(RDA)这两种连接解决方案时,将启用跟踪功能。

àSQLCE客户端代理:它是进行连接的主要组件,它可以应用下列自定义的SQLCE对象。

       ·Replication对象

       ·RemoteDataAccess对象

       ·Engine对象

·服务器环境

SQLCE服务器代理,Micorsoft Internet信息服务(IIS)SQL Sever组成。

àSQLCE服务器代理:可处理由SQLCE客户端代理发送过来的HTTP请求。SQLCE服务器代理连接到SQL Sever,并通过HTTP将数据与架构信息返回给SQLCE客户端代理。

à Micorsoft Internet信息服务(IIS):提供了集成Web服务器功能。可以使用IIS托管并管理Internet或者Internet上的网页,FTP站点。IIS可以提供一种协议,通过这种协议,设备可以连接到服务器以便通过RDA或者复制技术来传输或交换数据。

àSQL Sever:一种协同工作的组件,包括关系数据管理,数据仓库与商业智能组件。

SQLCE支持SQL语句,提供与SQL Sever 2000一致的开发模型和API





 

SQLCE 3.0连接配置

在客户端和服务器端建立代理连接,以便客户端能够和服务器端进行数据交互。

·到如下目录:C:\Program Files\Microsoft SQL Server 2005 Mobile Edition\Server找到ConnWiz30.exe可执行程序。

 

双击打开,出现“欢迎使用配置Web同步向导”,点击“Next”。

 

 

 

·“订阅服务器类型”,选择“SQL Server Mobile Edition”,点击“Next”。

 

 

 

 

·“Web服务器”,输入运行IIS的计算机名,采用默认即可。勾选“创建新的虚拟目录”,然后选中“默认网站”。点击“Next”。

 

 

 

·“虚拟目录信息”,输入别名,如sqlce30,路径保持默认,该路径下包含了

sqlcesa30.dll链接库,点击“Next”。

 

·点击“是”

 

·点击“是”

 

 

 

·“安全通信”,采取默认设置,点击“Next”。

 

 

  

“客户端身份验证”,选择“客户端将以匿名方式进行连接,不需要输入用户名和密码(A)”,点击“Next”。

 

 

  

 

·“匿名访问”,默认即可,点击“Next”。

 

 

  

·“快照共享访问”,首先在C盘建立一个文件夹,重命名为snapshot(也可以换成其他名字),右键单击,去掉“只读”属性,设置共享,共享名为snapshot。然后在如下图的对话框中,“共享”输入\\计算机名\\snapshot,点击“Next”。

 

·点击“是”。

 

 

  

·出现如下图对话框,点击“Finish”。

 

 

  

·出现如下图对话框,提示“Success”,点击“close”。

 

 

 

连接配置结束,可以做一个简单的测试来判断配置是否成功。

·打开“控制面板”

·选择“Windows防火墙”

·点击“高级”属性页

·“网络连接设置”右侧点击“设置”

·选中“Web服务器(HTTP)”复选框

·点击“确定”按钮

然后打开IE浏览器,输入“http://计算机名/sqlce3.0/sqlcesa30.dll

出现如下图,表明配置成功。

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sql server ce 的工具 非常有用 SQL Server 2005 移动版(SQL Server Mobile)或SQL Server 2000 Windows CE 2.0版(SQL Server CE 2.0)的企业和个人用户如果计划与SQL Server 2000或SQL Server 2005数据库保持同步,需要在您运行Microsoft Internet Information Services(IIS)的服务器上安装互联工具。 本页内容表述的是互联工具。请注意文件名中的“xx”是代表安装语言的标识符。最初仅有英文互联工具信息(“en”即标识符“XX”)。为满足向后兼容的需要,我们提供SQL Server CE 2.0复制软件。 请查阅安装互联工具的设置说明。 1. Microsoft SQL Server 2005移动版服务器工具(sqlce30setupxx.msi)在IIS 箱中安装SQL Server Mobile复制组件。 这个组件用于把移动设备中的SQL Server Mobile连接到SQL Server 2005、SQL Server 2000 SP3a、及 SQL Server 2000 SP4数据库。 2. Microsoft SQL Server 2000 Service Pack 4复制组件(sql2kxxsp4.msi)在IIS机器中安装SQL Server 2000 SP3a复制组件。这个组件用于把移动设备中的SQL Mobile数据库连接到SQL Server 2000 SP4数据库。 3. Microsoft SQL Server 2000 Service Pack 3a复制组件(sql2kxxsp3a.msi)在IIS机器中安装 SQL Server CE 2.0 及 SQL Server 2000 SP4 复制组件。 该组件用于把移动设备中的SQL Server CE 2.0数据库连接到SQL Server 2000 SP3a数据库。 4. 用于SQL Server 2000 SP4 (sqlce20sql2ksp4.exe)的SQL Server CE 2.0 复制组件在IIS机器中安装 SQL Server CE 2.0 及 SQL Server 2000 SP4 复制组件。该组件用于把移动设备中的SQL Server CE 2.0数据库连接到SQL Server 2000 SP4。 5. 用于SQL Server 2000 SP3a (sqlce20sql2ksp3a.exe)的SQL Server CE 2.0复制组件在IIS机器中安装SQL Server CE 2.0 及 SQL Server 2000 SP3a 复制组件。该组件用于把移动设备中的SQL Server CE 2.0数据库连接到SQL Server 2000 SP3a 数据库
以下是使用VC++的OLE DB技术连接SQLCE数据库的开发环境搭建过程和代码: 1. 首先需要下载并安装SQL Server Compact Edition (SQLCE) 3.5 SP2 版本,可以从微软官网下载。 2. 打开Visual Studio,创建一个新的VC++项目。在项目属性中,选择“常规”选项卡,将“字符集”设置为“使用多字节字符集”。 3. 在项目中添加对oledb.h和sqloledb.h的引用。通过右键单击项目,并选择“属性”选项,然后在“C/C++”选项卡下的“常规”中添加包含目录。在“链接器”选项卡下的“输入”中添加附加依赖项“oledb.lib”和“sqloledb.lib”。 4. 在代码中添加以下头文件: ``` #include <oledb.h> #include <sqloledb.h> ``` 5. 创建一个OLE DB连接对象和一个命令对象: ``` IDBInitialize *pIDBInitialize = NULL; IDBCreateSession *pIDBCreateSession = NULL; IDBCreateCommand *pIDBCreateCommand = NULL; ICommandText *pICommandText = NULL; ``` 6. 初始化OLE DB连接: ``` CoInitialize(NULL); hr = CoCreateInstance(CLSID_SQLSERVERCE, NULL, CLSCTX_INPROC_SERVER, IID_IDBInitialize, (void **)&pIDBInitialize); hr = pIDBInitialize->Initialize(); ``` 7. 创建一个OLE DB会话对象: ``` hr = pIDBInitialize->QueryInterface(IID_IDBCreateSession, (void **)&pIDBCreateSession); hr = pIDBCreateSession->CreateSession(NULL, IID_IUnknown, (void **)&pSession); ``` 8. 创建一个命令对象: ``` hr = pSession->QueryInterface(IID_IDBCreateCommand, (void **)&pIDBCreateCommand); hr = pIDBCreateCommand->CreateCommand(NULL, IID_IUnknown, (void **)&pCommand); hr = pCommand->QueryInterface(IID_ICommandText, (void **)&pICommandText); ``` 9. 执行SQL查询语句: ``` hr = pICommandText->SetCommandText(DBGUID_DBSQL, L"SELECT * FROM [TableName]"); hr = pCommand->Execute(NULL, IID_IRowset, NULL, NULL, (IUnknown **)&pIRowset); ``` 完整的代码示例可参考以下代码: ``` #include <windows.h> #include <oledb.h> #include <sqloledb.h> #include <stdio.h> int main() { HRESULT hr; // 创建OLE DB连接对象和命令对象 IDBInitialize *pIDBInitialize = NULL; IDBCreateSession *pIDBCreateSession = NULL; IDBCreateCommand *pIDBCreateCommand = NULL; ICommandText *pICommandText = NULL; IRowset *pIRowset = NULL; // 初始化OLE DB连接 CoInitialize(NULL); hr = CoCreateInstance(CLSID_SQLSERVERCE, NULL, CLSCTX_INPROC_SERVER, IID_IDBInitialize, (void **)&pIDBInitialize); hr = pIDBInitialize->Initialize(); // 创建OLE DB会话 IUnknown *pSession = NULL; hr = pIDBInitialize->QueryInterface(IID_IDBCreateSession, (void **)&pIDBCreateSession); hr = pIDBCreateSession->CreateSession(NULL, IID_IUnknown, (void **)&pSession); // 创建命令对象 ICommand *pCommand = NULL; hr = pSession->QueryInterface(IID_IDBCreateCommand, (void **)&pIDBCreateCommand); hr = pIDBCreateCommand->CreateCommand(NULL, IID_IUnknown, (void **)&pCommand); hr = pCommand->QueryInterface(IID_ICommandText, (void **)&pICommandText); // 执行SQL查询语句 hr = pICommandText->SetCommandText(DBGUID_DBSQL, L"SELECT * FROM [TableName]"); hr = pCommand->Execute(NULL, IID_IRowset, NULL, NULL, (IUnknown **)&pIRowset); // 处理查询结果 DBCOUNTITEM cRowsObtained; HROW rghRows[10]; while (TRUE) { hr = pIRowset->GetNextRows(NULL, 0, 10, &cRowsObtained, &rghRows); if (hr == DB_S_ENDOFROWSET) break; for (int i = 0; i < cRowsObtained; i++) { printf("Row %d: ", i); // 获取每个列的值 DBBINDING dbBinding; dbBinding.iOrdinal = 1; dbBinding.wType = DBTYPE_WSTR; dbBinding.obValue = 0; dbBinding.cbMaxLen = 256; dbBinding.obLength = dbBinding.cbMaxLen; dbBinding.dwPart = DBPART_VALUE | DBPART_LENGTH | DBPART_STATUS; dbBinding.pTypeInfo = NULL; dbBinding.pObject = NULL; dbBinding.pBindExt = NULL; dbBinding.dwFlags = 0; DBCOLUMNINFO dbColumnInfo; dbColumnInfo.pwszName = L"ColumnName"; dbColumnInfo.dwType = DBTYPE_WSTR; dbColumnInfo.ulColumnSize = 256; dbColumnInfo.dwFlags = 0; dbColumnInfo.lcid = NULL; dbColumnInfo.pTypeInfo = NULL; dbColumnInfo.cbMaxLen = 0; dbColumnInfo.dwPart = DBPART_VALUE | DBPART_LENGTH | DBPART_STATUS; dbColumnInfo.pwcsName = NULL; HACCESSOR hAccessor; hr = pIRowset->QueryInterface(IID_IAccessor, (void **)&pAccessor); hr = pAccessor->CreateAccessor(DBACCESSOR_ROWDATA, 1, &dbBinding, sizeof(dbColumnInfo), &hAccessor, NULL); WCHAR wszValue[256]; DWORD dwLength; hr = pAccessor->GetData(rghRows[i], hAccessor, wszValue, &dwLength); wprintf(L"%s\n", wszValue); hr = pAccessor->ReleaseAccessor(hAccessor, NULL); hr = pAccessor->Release(); } hr = pIRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL); } // 释放资源 hr = pICommandText->Release(); hr = pCommand->Release(); hr = pSession->Release(); hr = pIDBCreateSession->Release(); hr = pIDBCreateCommand->Release(); hr = pIDBInitialize->Release(); CoUninitialize(); return 0; } ``` 希望以上内容能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值