我的ODBC代码的奇怪情况(从C库调用)。基本上,我有以下一系列事件:
创建"选择last_insert_id()"语句字符串
注意:如果在SQL Server模式下,我们将创建一个" select @@ identity" 声明
使用SQLBindCol绑定列 - 这是我得到"无效的地方 描述符索引"错误
注意:如果处于SQL Server模式,这样可以正常工作,没有错误
调用SQLExecDirect获取最后一个插入ID - 这种情况永远不会发生 因为SQLBindCol错误
标准的MySQL ODBC连接器在这种情况下是否需要特殊的东西?有没有人有这种类型的"插入"的ODBC示例?然后"得到最后一个插入ID"行为?也许我需要打电话给#34; SQLPrepare"在第6步之前(我绑定列)?问这个的另一种方法:是否应该为每个SQLExecute或SQLExecDirect调用进行SQLPrepare调用?
我知道它直接在SQL中工作,所以问题是我的C ODBC代码。
感谢。
答案 0 :(得分:0)
对于那些感兴趣的人,我最后通过在创建" select last_insert_id()"之间添加一个SQLPrepare调用来改变上述步骤。 (步骤5)并调用SQLBindCol(步骤6)。不确定这是否适用于其他人,但似乎对我来说效果很好。
至于研究,我在网上看了整个地方,从来没有找到一个非常好或明确的答案。大多数评论都涉及SQL,而不是ODBC。对ODBC的引用含糊不清,似乎并不适用于我所能看到的情况。
我的假设是我使用的SqlServer ODBC驱动程序以不同的方式处理缺少的prepare语句(可能更好,但这是有争议的)比我的MySql ODBC驱动程序。
希望这会对人们有所帮助。显然,如果人们有更好的想法,请告诉我们。