插入后 LAST_INSERT_ID 上的描述符索引无效
Invalid descriptor index on LAST_INSERT_ID after insert
我的 ODBC 代码(从 C 库调用)出现奇怪情况。基本上,我有以下事件序列:
- 创建插入语句(只是一个字符串)
- 调用SQL准备插入语句字符串
- 绑定各种参数(列值),使用
SQL绑定参数
- 调用 SQLExecute 插入行(顺便说一句,我可以这样做
查看 MySQL 数据库中的行)
创建"select last_insert_id()"语句字符串
NOTE: if in SQL Server mode, we would create a "select @@identity"
statement
使用 SQLBindCol 绑定列 - 这是我得到“无效
描述符索引”错误
NOTE: if in SQL Server mode, this works fine, with no error
调用 SQLExecDirect 获取最后的插入 ID - 这永远不会发生
因为 SQLBindCol 错误
标准 MySQL ODBC 连接器在这种情况下是否需要特殊的东西?有没有人有这种 "insert" 然后 "get last insert id" 行为的 ODBC 示例?也许我需要在第 6 步(绑定列的位置)之前调用 "SQLPrepare"?另一种提问方式:每个 SQLExecute 或 SQLExecDirect 调用都应该有一个 SQLPrepare 调用吗?
我知道它直接在 SQL 中工作,所以问题出在我的 C ODBC 代码上。
谢谢。
对于那些感兴趣的人,我最终通过在创建 "select last_insert_id()"(步骤 5)和调用 SQLBindCol(步骤6).不确定这是否适用于其他人,但它似乎对我来说效果很好。
至于研究,我在网上到处找,从来没有找到真正好的或明确的答案。大多数评论是关于所涉及的 SQL,而不是 ODBC。而且对 ODBC 的引用含糊不清,据我所知似乎不适用于我的情况。
我的假设是我正在使用的 SqlServer ODBC 驱动程序处理丢失的准备语句的方式与我的 MySql ODBC 驱动程序不同(甚至可能更好,但这是值得商榷的)。
- SQL 服务器 ODBC 驱动程序是由 Easysoft
提供的
- MySql ODBC 驱动程序是 MySql
的标准 CentOS 安装提供的驱动程序
希望这对人们有所帮助。显然,如果大家有更好的想法,请告诉我们。
我的 ODBC 代码(从 C 库调用)出现奇怪情况。基本上,我有以下事件序列:
- 创建插入语句(只是一个字符串)
- 调用SQL准备插入语句字符串
- 绑定各种参数(列值),使用 SQL绑定参数
- 调用 SQLExecute 插入行(顺便说一句,我可以这样做 查看 MySQL 数据库中的行)
创建"select last_insert_id()"语句字符串
NOTE: if in SQL Server mode, we would create a "select @@identity" statement
使用 SQLBindCol 绑定列 - 这是我得到“无效 描述符索引”错误
NOTE: if in SQL Server mode, this works fine, with no error
调用 SQLExecDirect 获取最后的插入 ID - 这永远不会发生 因为 SQLBindCol 错误
标准 MySQL ODBC 连接器在这种情况下是否需要特殊的东西?有没有人有这种 "insert" 然后 "get last insert id" 行为的 ODBC 示例?也许我需要在第 6 步(绑定列的位置)之前调用 "SQLPrepare"?另一种提问方式:每个 SQLExecute 或 SQLExecDirect 调用都应该有一个 SQLPrepare 调用吗?
我知道它直接在 SQL 中工作,所以问题出在我的 C ODBC 代码上。
谢谢。
对于那些感兴趣的人,我最终通过在创建 "select last_insert_id()"(步骤 5)和调用 SQLBindCol(步骤6).不确定这是否适用于其他人,但它似乎对我来说效果很好。
至于研究,我在网上到处找,从来没有找到真正好的或明确的答案。大多数评论是关于所涉及的 SQL,而不是 ODBC。而且对 ODBC 的引用含糊不清,据我所知似乎不适用于我的情况。
我的假设是我正在使用的 SqlServer ODBC 驱动程序处理丢失的准备语句的方式与我的 MySql ODBC 驱动程序不同(甚至可能更好,但这是值得商榷的)。
- SQL 服务器 ODBC 驱动程序是由 Easysoft 提供的
- MySql ODBC 驱动程序是 MySql 的标准 CentOS 安装提供的驱动程序
希望这对人们有所帮助。显然,如果大家有更好的想法,请告诉我们。