使用 .NET 和 SQL Anywhere 10 创建 Windows Mobile 数据库应用程序的 10 个步骤






4.20/5 (4投票s)
本文旨在帮助用户入门使用 SQL Anywhere 和 Visual Studio .NET (C#) 构建移动数据库应用程序。
引言
我选择创建这个示例是在完成了我之前的文章《使用 .NET 和 UltraLite 10 创建 Windows Mobile 数据库应用程序的 10 个步骤》之后。收到了一些请求,要求我撰写一篇类似的,但这次是针对 SQL Anywhere 10 的文章。
本文旨在帮助用户入门使用 SQL Anywhere 10 和 Visual Studio .NET (C#) 构建移动数据库应用程序。
什么是 SQL Anywhere 10?
SQL Anywhere 是一款功能强大的企业级关系数据库,可在 Linux、Windows、UNIX、MacOSX 和 Windows Mobile 等平台上使用。从 Windows Mobile 开发者的角度来看,SQL Anywhere 极具吸引力,因为它支持企业数据库功能,如存储过程、触发器、数据库事件以及用于回滚和恢复的完整事务日志。虽然 SQL Anywhere(约 5.6 MB)比目前 Windows Mobile 市场上许多“嵌入式”数据库都要大,但它也拥有更广泛的 SQL 支持,并且其优化器能够极短时间内在 Windows Mobile 上执行极其复杂的查询。SQL Anywhere 在各平台之间也兼容二进制文件,这意味着您可以在 Linux 等操作系统上创建 SQL Anywhere 数据库,然后将数据库(.db 和 .log 文件)物理复制到任何受支持的平台以获得等效的功能。在 Windows Mobile 环境中,SQL Anywhere 通常用于数据库同步,但它也可以用作简单的独立数据库。
要求
要开始开发应用程序,需要以下工具
- SQL Anywhere 10 开发者版(请选择安装 SQL Anywhere CE 组件)
- Visual Studio .NET 2005
- Windows Mobile 5 软件开发工具包(标准版和专业版)
步骤 1 - 创建数据库
创建 SQL Anywhere 数据库有多种方法,例如 Sybase Central,这是一个用于管理数据库和同步的 GUI 工具。在本教程中,我将使用命令行实用程序来创建数据库并填充一些表和数据。为此,请下载附带的项目并执行以下批处理文件。
create_db.bat
批处理文件完成后,您应该会得到一个如下所示的数据库。您可以通过执行:`dbisql -c "dbf=simplesa.db;uid=dba;pwd=sql"` 然后执行查询:`Select * from customer` 来验证这一点。


步骤 2 - 创建项目
下一步是创建一个新项目。为此,请打开 Visual Studio .NET 2005,然后选择“新建 | 项目”。在新的项目类型窗口中,展开“Visual C# | 智能设备”,然后选择“Windows Mobile 5.0 Pocket PC”。在模板窗口中,选择“设备应用程序”。最后,将项目命名为 `SimpleSA`,选择一个保存项目的位置,然后按“确定”。

步骤 3 - 添加 SQL Anywhere 命名空间
现在我们已经创建了一个模板 C# 应用程序,接下来我们需要添加 SQL Anywhere ADO.NET 命名空间。为此,请选择“项目 | 添加引用 | 浏览”。然后找到位于 SQL Anywhere 10 安装目录下的 `iAnywhere.Data.SQLAnywhere.dll` 文件(路径为 `\ce\assembly\v2`),然后按“确定”。
注意:如果未列出该组件,请确保您已在主安装中安装了 SQL Anywhere 10 CE 组件(默认情况下未安装)。

步骤 4 - 添加 SQL Anywhere 数据库引擎组件
在安装 SQL Anywhere 10 时,您可能已经将其安装到了设备上。这会安装多个兆字节的文件,而您的应用程序可能根本用不到。因此,我倾向于只包含我需要的组件并将它们包含在我的项目中。对于我们简单的示例,我们只需要数据库组件(例如,我们不需要同步或消息组件),因此我们可以选择只包含以下组件:
- `dbdata10.dll`:支持文件(例如,错误消息等)
- 注意:从 10.0.1 版本开始,此文件已内置到 `iAnywhere.Data.SQLAnywhere.dll` 中,因此不再需要。
- `dblgen10.dll`:英语 DLL
- `dbsrv10.exe`:主数据库服务器引擎
要包含这些组件,请选择“项目 | 添加现有项”。在“文件名”目录中,切换到 SQL Anywhere 10 安装目录,然后选择 `\ce\arm.50`。接下来,将“文件类型”更改为“所有文件(*.*)”。选择上述三个文件,然后按“添加”。在“解决方案资源管理器”中选择这三个文件,并将“复制到输出目录”属性更改为“始终复制”。您还需要将“生成操作”属性标记为“内容”。
有关部署特定组件的更多信息,请参阅 此文档。

步骤 5 - 添加 SQL Anywhere 数据库
现在我们将把 SQL Anywhere 数据库包含到应用程序中。要附加数据库,请选择“文件 | 添加现有项”并切换到您在步骤 1 中运行 `create_db.bat` 的目录。选择 `simplesa.db` 和 `simplesa.log`,然后按“添加”。就像在上一步中所做的那样,在“解决方案资源管理器”中选择 `simplesa.db` 和 `simplesa.log` 文件,并将“复制到输出目录”属性更改为“始终复制”。您还需要将“生成操作”属性标记为“内容”。

步骤 6 - 添加窗体控件
接下来,我们将开始添加查询数据库的控件。为此,我们将选择一个组合框。将一个组合框拖到窗体上,并将其命名为 `comboCustomers`,如下所示:

步骤 7 - 添加 SQL Anywhere 命名空间引用
为此,请右键单击窗体并选择“查看代码”。在顶部的其他引用附近,通过添加以下行来添加对 SQL Anywhere 命名空间的引用:
using iAnywhere.Data.SQLAnywhere;
步骤 8 - 连接和查询 SQL Anywhere 数据库
现在我们已经创建并附加了 SQL Anywhere 数据库,下一步是添加连接和查询数据库的逻辑。首先,我们将仅从数据库中进行选择。有关其他功能,请参阅 SQL Anywhere 10 在线帮助。
再次切换到 `Form1.cs` 的代码,并在 `Form1` 函数的末尾添加以下行:
Connect();
接下来添加一个新函数,如下所示:
private void Connect()
{
SAConnection conn = new SAConnection
("DBF=\\Program Files\\SimpleSA\\SIMPLESA.DB;UID=DBA;PWD=sql");
try
{
conn.Open();
SACommand cmd = new SACommand
("select last_name + ', '+
first_name from customers order by last_name", conn);
SADataReader reader = cmd.ExecuteReader();
while (reader.Read())
comboCustomers.Items.Add(reader.GetString(0));
reader.Close();
conn.Close();
}
catch (SAException ex)
{
MessageBox.Show(ex.Errors[0].Message);
}
}
请注意,我们可以引用 SQL Anywhere 数据库文件,并且应用程序会根据需要自动启动和停止引擎。
步骤 9 - 编译和部署应用程序
对于这个示例,我将使用 Windows Mobile 模拟器作为应用程序目标。要编译和部署,请确保目标是 Windows Mobile 5 模拟器之一(左上角的组合框)。然后选择“生成 | 部署解决方案”。您应该会看到应用程序编译、启动模拟器并部署应用程序。
部署完成后,您应该可以在设备文件资源管理器下的 `\program files\simplesa` 中看到以下文件列表。

步骤 10 - 运行应用程序
在设备模拟器中,单击 `SimpleSA` 应用程序。应用程序启动后,它将连接到数据库并填充 `Customer` 组合框,如下所示:

后续步骤
您可能希望采取的一些后续步骤来增强应用程序,例如:
- 选择一个 `customer` 后,将该 `customer` 的地址填充到文本框中。
- 添加更新或删除 `customer` 的功能。
- 使用 MobiLink 添加数据库复制(不要忘记包含额外的 DLL 和 EXE 组件)。
摘要
正如我们在上述项目中看到的,尽管 SQL Anywhere 是一款企业级数据库,但它也是一款极其易于嵌入的数据库。在使用过程中,您也会体会到数据库引擎所包含的性能和功能。其复杂的数据库优化器和卓越的数据库功能使其成为任何复杂移动应用程序的理想伴侣。