准备和执行语句 (ODBC)

准备一次语句,然后多次执行它

  1. 调用SQLPrepare 函数准备语句。

  2. (可选) 调用SQLNumParams来确定已准备的语句中的参数数量。

  3. (可选)对于预定义语句中的每个参数:

  4. 对于每次执行预定义语句:

    • 如果语句有参数标记,请将数据值放到绑定参数缓冲区中。

    • 调用SQLExecute执行已准备的语句。

    • 如果使用执行时数据输入的参数, SQLExecute返回 SQL_NEED_DATA。 通过使用分块区发送数据SQLParamDataSQLPutData

用按列参数绑定预定义语句

  1. 调用SQLSetStmtAttr以设置以下属性:

    • 将 SQL_ATTR_PARAMSET_SIZE 设置为参数集 (S) 的数目。

    • 将 SQL_ATTR_PARAM_BIND_TYPE 设置为 SQL_PARAMETER_BIND_BY_COLUMN。

    • 将 SQL_ATTR_PARAMS_PROCESSED_PTR 属性设置为指向 SQLUINTEGER 变量,以包含所处理的参数个数。

    • 将 SQL_ATTR_PARAMS_STATUS_PTR 设置为指向 SQLUSSMALLINT 变量的数组 array[S],以包含参数状态指示器。

  2. 调用 SQLPrepare 准备语句。

  3. (可选) 调用SQLNumParams来确定已准备的语句中的参数数量。

  4. (可选) 对于预定义语句中的每个参数,调用 SQLDescribeParam 以获得参数信息。

  5. 对于每个参数标记:

    • 分配 S 参数缓冲区的数组以存储数据值。

    • 分配 S 参数缓冲区的数组以存储数据长度。

    • 调用 SQLBindParameter 若要将参数数据值和数据长度数组绑定到语句参数。

    • 如果参数是执行时数据文本或映像参数,则设置它。

    • 如果使用任何执行时数据参数,则设置它们。

  6. 对于每次执行预定义语句:

    • 将 S 个数据值和 S 个数据长度放到绑定参数数组中。

    • 调用 SQLExecute 执行已准备的语句。

    • 如果使用执行时数据输入的参数,SQLExecute 将返回 SQL_NEED_DATA。 通过使用 SQLParamData 和 SQLPutData 分块区发送数据。

用按行绑定参数预定义语句

  1. 分配结构数组 [S],其中,S 是参数的集合数。 该结构对于每个参数有一个元素,并且每个元素有两部分:

    • 第一部分是合适的数据类型的变量,以包含参数数据。

    • 第二部分是 SQLINTEGER 变量,以包含状态指示器。

  2. 调用SQLSetStmtAttr以设置以下属性:

    • 将 SQL_ATTR_PARAMSET_SIZE 设置为参数集 (S) 的数目。

    • 将 SQL_ATTR_PARAM_BIND_TYPE 设置为在步骤 1 中分配的结构的大小。

    • 将 SQL_ATTR_PARAMS_PROCESSED_PTR 属性设置为指向 SQLUINTEGER 变量,以包含所处理的参数个数。

    • 将 SQL_ATTR_PARAMS_STATUS_PTR 设置为指向 SQLUSSMALLINT 变量的数组 array[S],以包含参数状态指示器。

  3. 调用 SQLPrepare 准备语句。

  4. 对于每个参数标记,调用 SQLBindParameter 为参数数据值和数据长度指针指向其在步骤 1 中分配的结构数组的第一个元素中的变量。 如果参数是执行时数据参数,则设置它。

  5. 对于每次执行预定义语句:

    • 用数据值填充绑定参数缓冲区数组。

    • 调用 SQLExecute 执行已准备的语句。 驱动程序将有效地执行 SQL 语句 S 次,每组参数一次。

    • 如果使用执行时数据输入的参数,SQLExecute 将返回 SQL_NEED_DATA。 通过使用 SQLParamData 和 SQLPutData 分块区发送数据。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值