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

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - 编程 » 嵌入式 SQL » 示例嵌入式 SQL 程序

 

动态游标示例

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

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

运行此程序时,它会提示输入连接字符串。以下是一个示例。

UID=DBA;PWD=sql;DBF=demo.db

含有嵌入式 SQL 的 C 程序位于 %SQLANYSAMP12%\SQLAnywhere\C 目录中。对于 Windows Mobile,动态游标示例位于 \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 的大小 (3)。如果此值不够大,则会使用数据库服务器返回的 SELECT 列表的实际大小来分配一个大小正确的 SQLDA。

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

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

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

 另请参见