MS SQL Server CE数据库应用开发指南

移动设备上实现或已经实现MS SQL Server CE v1.0/2.0的开发者们,可能会对如何编写此类应用程序感到困惑。本文旨在为那些希望了解更多关于MS SQL Server CE数据库应用开发的读者提供帮助。通过本文,将能够访问安装在PocketPC设备上的MS SQL Server CE数据库,并使用自己的宝贵信息,使应用程序更加强大,达到企业级水平。

为什么选择MS SQL Server CE而不是CD数据库?

MS SQL Server CE提供了更好的性能,并支持熟悉的SQL数据定义和管理语言(DDM/DDL),这意味着它将加速应用程序/产品开发周期。

要利用各种现成的功能,必须具备一定的SQL DDM和DDL知识。因为需要编写自己的SQL语句来创建表、添加/更新/删除任何表中的记录。

使用代码

在查看代码之前,需要记住MS SQL Server CE在任何时候只支持对任何数据库的单次连接。

查看SqlSvrCE.cpp.h文件,将得到所有现成的函数,最终将从自己的WIN32API或MFC应用程序中调用这些函数,这取决于选择。

函数列表

以下是将需要记住并在整个数据库应用程序中调用的11个函数:

  • 创建一个新的SQL Server CE数据库提供程序。
  • 在成功连接到传入的数据库名称(*.sdf)后,创建一个新的SQL Server CE数据库会话。
  • 检索数据库访问过程中由于错误而发生的最后一个已知的OLE DB错误消息。
  • 使用传入的数据库名称(*.sdf)连接到SQL Server CE数据库。
  • 使用传入的数据库名称(*.sdf)断开当前打开的SQL Server CE数据库的连接。
  • 使用传入的数据库名称(*.sdf)创建SQL Server CE数据库。
  • 使用传入的数据库名称(*.sdf)删除SQL Server CE数据库。
  • 使用传入的数据库名称(*.sdf)压缩SQL Server CE数据库。
  • 根据传入的表名称和第一列信息创建新表。
  • 根据传入的表名称删除现有表。
  • 根据传入的信息在TABLECOLUMNINFO结构中创建新列。
  • 根据传入的信息在TABLECOLUMNINFO结构中删除现有列。
  • 根据传入的信息在TABLEINDEXINFO结构中创建新索引。
  • 根据传入的信息在TABLEINDEXINFO结构中删除现有索引。
  • 执行不需要返回RowSet对象的SQL语句。
  • 将记录加载到RowSet对象中,参考传入的SQL语句。
  • 处理GetRowset函数创建的Rowset对象。

需要注意的是,ProcessRowset函数完全定制以适应附带的示例应用程序的要求,它将显示所有检索到的记录和列标题到提供的listview控件中。因此,需要修改ProcessRowset函数,甚至编写自己的ProcessRowset函数来解释从MS SQL Server CE数据库中读取的数据。

所有必要的注释都在源文件中,有了这些注释,相信当开始修改或编写自己的ProcessRowset函数时,生活会变得轻松。

示例代码

例如,如果想在\Windows文件夹中创建一个名为MyDb.sdf的数据库,只需要调用CreateDB如下:

_tcscpy(szDBName, TEXT("\\windows\\MyDb.sdf")); hr = CreateDB(szDBName); if (!FAILED(hr)) { // 显示结果消息文本。 MessageBox(hWnd, TEXT("数据库成功创建。"), TEXT("信息"), MB_OK); } else { // 获取OLE DB错误消息 GetErrorMessage(szErrMessage, wcslen(szErrMessage)); if (E_OUTOFMEMORY == hr) { // 组合结果消息 wsprintf(szErrMessage, TEXT("(0x%x) 内存不足!"), hr); } // 显示结果消息文本。 MessageBox(hWnd, szErrMessage, TEXT("错误"), MB_ICONSTOP | MB_OK); }

验证

可能会注意到示例程序的用户界面不适合MS PocketPC(240x320)屏幕。这是因为示例应用程序是基于Windows CE .NET平台开发的,只是创建了一个新的PocketPC应用程序,并直接复制了所有相关的cpp/h文件。希望不介意。

更新

基于之前的源文件,实现了总共6个新函数,这些6个函数是:

  • CreateTable
  • DropTable
  • CreateColumn
  • DropColumn
  • CreateIndex
  • DropIndex
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485