Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - 编程 » 嵌入式 SQL » 示例嵌入式 SQL 程序

 

动态游标示例

本示例演示如何使用动态 SQL SELECT 语句的游标。它与静态游标示例稍有不同。如果还未查看静态游标示例,则在查看此示例前先查看静态游标示例会很有帮助。请参见静态游标示例

有关可以在何处找到源代码以及如何构建此示例程序的信息,请参见示例嵌入式 SQL 程序

dcur 程序允许用户选择要使用 n 命令查看的表。然后,该程序会根据屏幕大小尽可能多地显示表中的信息。

在运行此程序时,它会提示输入以下形式的连接字符串:

UID=DBA;PWD=sql;DBF=samples-dir\demo.db

含有嵌入式 SQL 的 C 程序位于 samples-dir\SQLAnywhere\C 目录中。对于 Windows Mobile,samples-dir\SQLAnywhere\CE\esql_sample 目录中提供了一个动态游标示例。除了 connect、open_cursor 和 print 函数之外,此程序看起来很像静态游标示例。

connect 函数使用嵌入式 SQL 接口函数 db_string_connect 连接到数据库。此函数还提供额外功能,可支持用于连接数据库的连接字符串。

open_cursor 例程首先构建 SELECT 语句

SELECT * FROM table-name

其中 table-name 是传递给例程的参数。然后,它使用此字符串准备动态 SQL 语句。

嵌入式 SQL DESCRIBE 语句用于以 SELECT 语句的结果填充 SQLDA 结构。

SQLDA 的大小

最初推测的是 SQLDA 的大小 (3)。如果此值不够大,则会使用数据库服务器返回的选择列表的实际大小来分配一个大小正确的 SQLDA。

然后,用缓冲区填充 SQLDA 结构以存放代表查询结果的字符串。fill_s_sqlda 例程将 SQLDA 中的所有数据类型转换为 DT_STRING 并分配适当大小的缓冲区。

然后,为此语句声明并打开游标。用于移动和关闭游标的其余例程保持不变。

fetch 例程稍有不同:它将结果放在 SQLDA 结构中,而不是放在一组主机变量中。print 例程有很大改动,可按屏幕宽度显示来自 SQLDA 结构的结果。print 例程还使用 SQLDA 的名称字段来显示每列的标题。