调用ODBC中SQLBindParameter引发的段错误

前提背景:

遇到了一个特别奇怪的问题,调用SQLBindParameter进行参数绑定是,最后一个参数交互的是绑定数据的长度,整数类型指针,随后我就传入了个局部遍历取地址传入,随后执行时程序说不定什么时候就莫名的段错误,最后查找文档和对这段代码进行调试,最后确定要传入的是全局变量,或当调用SQLExecute执行完SQL语句再释放,因为在调用 SQLExecute() 或 SQLExecDirect() 时,并且 StrLen_or_IndPtr (最后一个指针)指向 SQL_DATA_AT_EXEC 值时, 将使用 SQLPutData() 来发送数据。此参数称为执行数据参数。 以下红色标记,是对上述出现问题的准确回复。

参考文件:

DB2 通用数据库 iSeries 版 SQL 调用层接口(ODBC)

SQLBindParameter() 用来使 SQL 语句中的参数标记与应用程序变量相关联(绑定)。当调用SQLExecute()SQLExecDirect() 时,将把数据从应用程序传送至 DBMS。在传送数据时,可能会发生数据转换。

还必须使用此函数来将应用程序存储器绑定到存储过程 CALL 语句的参数,该参数可以是输入参数、输出参数或输入输出参数。此函数本质上是 SQLSetParam() 的扩展。

语法

SQLRETURN SQLBindParameter(SQLHSTMT          StatementHandle,
                           SQLSMALLINT      ParameterNumber,
                           SQLSMALLINT       InputOutputType,
                           SQLSMALLINT       ValueType,
                           SQLSMALLINT       ParameterType,
                           SQLINTEGER        ColumnSize,
                           SQLSMALLINT       DecimalDigits,
                           SQLPOINTER        ParameterValuePtr,
                           SQLINTEGER        BufferLength,
                           SQLINTEGER       *StrLen_or_IndPtr);

函数自变量

表 22. SQLBindParameter 自变量

数据类型 自变量 使用 描述
SQLHSTMT StatementHandle
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值