gpt4 book ai didi

c++ - sql 选择顺序的强制转换规范的字符值无效

转载 作者:行者123 更新时间:2023-12-02 10:04:39 26 4
gpt4 key购买 nike

我有这个数据(简化)
enter image description here

当我选择 int1, int2, str1按照这个顺序,我得到一个无效的类型转换错误。当我在 str1, int1, int2 中选择它们时命令 sql 调用成功完成。

sql调用看起来像这样(再次简化)

Select int1, int2, str1 from table where int1 = ? (my variable)

此调用中没有实际的值转换。

代码是 c++,使用 Native Client 11 的 ODBC 连接到 MSSQL 数据库。
变量和绑定(bind)列都是静态声明的,并且具有适当的类型和长度(并且按照我更改顺序时的调用顺序)。

我正在寻找任何其他想法,当我在 int 值之后选择 char 值时如何找出它失败的原因。 SqlFetch 函数调用失败(尝试将返回的数据加载到绑定(bind)列时)

非简化查询返回 140 列混合类型,我想将解决方案应用于整个查询。

(要注意)
c++ 列绑定(bind)看起来像这样,按选择的顺序排列:
sqlret = SQLBindCol(hstmt_myQuery,item_col,SQL_C_LONG,&int1, (SDWORD) sizeof(int1), &indicator[item_col++]); exec_sql_error(__FILE__, &henv, &hdbc, last_connect_time, "BindCol hstmt_myQuery", hstmt_myQuery, &sqlret);
sqlret = SQLBindCol(hstmt_myQuery,item_col,SQL_C_LONG,&int2, (SDWORD) sizeof(int2), &indicator[item_col++]); exec_sql_error(__FILE__ , &henv, &hdbc, last_connect_time , "BindCol hstmt_myQuery" , hstmt_myQuery , &sqlret );
sqlret = SQLBindCol(hstmt_myQuery,item_col,SQL_C_CHAR,str1, (SDWORD) sizeof(str1), &indicator[item_col++]); exec_sql_error(__FILE__ , &henv, &hdbc, last_connect_time , "BindCol hstmt_myQuery" , hstmt_myQuery , &sqlret );

最佳答案

参数的评估顺序未指定。

所以你有 item_col 的问题与 SQLBindCol(/*..*/, item_col, /*..*/, item_col++); .

增加item_col在单独的声明中应该可以解决您的问题。

关于c++ - sql 选择顺序的强制转换规范的字符值无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60886519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com