首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入后LAST_INSERT_ID上的无效描述符索引

插入后LAST_INSERT_ID上的无效描述符索引
EN

Stack Overflow用户
提问于 2015-01-26 01:54:47
回答 1查看 652关注 0票数 0

ODBC代码的奇怪情况(从C库调用)。基本上,我有以下一系列事件:

  1. 创建insert语句(只是一个字符串)
  2. 使用insert语句字符串调用SQLPrepare
  3. 使用SQLBindParameter绑定各种参数(列值)
  4. 调用SQLExecute插入行(顺便说一句,我可以在MySQL DB中看到该行)
  5. 创建"select last_insert_id()“语句字符串 注意:如果在Server模式下,我们将创建一个"select @@identity“语句
  6. 使用SQLBindCol绑定列-这就是我获得“无效描述符索引”错误的地方 注意:如果在Server模式下,这很好,没有错误
  7. 调用SQLExecDirect以获得最后一个insert id --由于SQLBindCol错误,这从未发生过

在这种情况下,标准的MySQL连接器需要特殊的东西吗?有谁有过这种类型的“插入”然后“获取最后插入id”行为的ODBC示例吗?也许我需要在步骤6之前调用"SQLPrepare“(在这里绑定列)?另一种问这个问题的方法是:每个SQLExecute或SQLExecDirect调用应该有一个SQLExecDirect调用吗?

我知道它直接在SQL中工作,所以问题是我的C ODBC代码。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-05 18:38:14

对于那些感兴趣的人,我最后更改了上述步骤,在创建"select last_insert_id( )“(步骤5)和调用SQLBindCol (步骤6)之间添加了一个SQLBindCol调用。不确定这是否对其他人有效,但似乎对我来说效果很好。

至于研究,我在网上到处找了一遍,却始终没有找到一个真正好的或清晰的答案。大多数评论都是关于所涉及的SQL,而不是ODBC。从我所能看到的情况来看,对ODBC的引用是模糊的,似乎不适用于我的情况。

我的假设是,我使用的SqlServer ODBC驱动程序与我的MySql ODBC驱动程序处理丢失的MySql语句的方式不同(可能更好,但这是有争议的)。

  • Server驱动程序是易软提供的驱动程序
  • MySql ODBC驱动程序是标准CentOS安装MySql的驱动程序。

希望这能帮助到人们。显然,如果人们有更好的想法,请告诉我们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28143799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档