Rom*_*ain 4 .net c# mysql odbc
我使用ODBC连接来连接到数据库.当我OdbcCommand.ExecuteNonQuery使用insert语句执行时,记录将插入到表中,但该方法返回0.
ExecuteNonQuery返回受影响的记录数.它在删除和更新的情况下工作正常,但在插入时不起作用.
query = "Insert into table1 (field1, field2) values (1,2)";
OdbcConnection = _remoteconn = new OdbcConnection(constring);
OdbcCommand cmd = new OdbcCommand(query, _remoteconn);
recordsAffected = cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
ODBC不是驱动程序 - 它是驱动程序的包装器.这个问题的答案取决于您使用的基础ODBC驱动程序,通常在连接字符串中指定.
MSDN文档实际上是一个期望或建议,但ODBC接口不能强制驱动程序返回特定的结果.可能是驱动程序有一些优化或设置干扰了您的结果,与SQL Server NO COUNT设置(这将覆盖驱动程序报告受影响的行的尝试等)不同.
有关ODBC如何工作的更全面说明,请参阅维基百科:http:
//en.wikipedia.org/wiki/ODBC
"由于不同的技术具有不同的功能,因此大多数ODBC驱动程序都没有实现ODBC标准中定义的所有功能.某些驱动程序提供了标准未定义的额外功能."
如果您告诉我们您使用的驱动程序,可能有助于找到解决方案.
编辑
据我所知,ODBC API函数是SQLRowCount函数,如下所定义:http://msdn.microsoft.com/en-us/library/windows/desktop/ms711835( v = vs.85
)的.aspx
根据ODBC标准,必须实现此函数才能使驱动程序被视为符合ODBC.(这并不是说该函数将返回预期的或正确的结果,只是它就在那里).
根据Transoft文档(第67页),我已经能够挖掘出已实现的SQLRowCount功能.没有提及此功能以任何方式被禁用或任何所需的配置.
鉴于上述情况,我会直接与供应商联系.它们的实现或未记录的"功能"似乎存在错误.
| 归档时间: |
|
| 查看次数: |
3427 次 |
| 最近记录: |