c# - 从批处理语句中获取异常详细信息

标签 c# .net mysql

我有一个通过 ODBC 驱动程序连接到 MySQL 5 服务器的应用程序。有时我使用准备好的/参数化的批处理语句来轻松地在服务器上移动数据。这工作得很好,直到出现问题的那一刻......

INSERT INTO blabla SELECT blablabla;
INSERT INTO blabla SELECT bliblibli;
UPDATE blabla;
// etc.

现在,如果这个语句出错,我会得到一个非常无用的异常:

System.Data.Odbc.OdbcException
ERROR [HY000] [MySQL][ODBC 3.51 Driver][mysqld-5.0.26-pro-nt]unhandled error from mysql_next_result()
   at System.Data.Odbc.OdbcDataReader.NextResult(Boolean disposing, Boolean allresults)
   at System.Data.Odbc.OdbcDataReader.NextResult()
   at System.Data.Odbc.OdbcDataReader.FirstResult()
   at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
   at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
   at System.Data.Odbc.OdbcCommand.ExecuteNonQuery()
   at MyApp.MyClass.MyData.WhyAreYouReadingThis()

InnerExceptions 为 null。

我能够提取有关该问题的更多信息吗? F.e.如果我没有使用批处理语句,我会收到确切的错误消息,但如果我有批处理语句,则不会。

最佳答案

不确定这是否能真正解决您的问题(更多详细信息请参阅数据库异常),但您是否考虑过使用 MySQL 的 .Net 连接器(又名 MySQL 的 ADO.NET 驱动程序)而不是 ODBC 驱动程序?

您可以从此处下载连接器:http://www.mysql.com/products/connector/

更新:
刚刚在 MSDN 中查看了 OdbcException 类。它似乎有一个名为 Errors 的属性,其中包含 OdbcError 类的集合。这些类的任何实例都应该包含所遇到的每个错误的描述。如果这有帮助,请告诉我。

更新2:
似乎大约一年前,一个与您面临的问题相关的错误已提交给 MySql 团队:http://bugs.mysql.com/bug.php?id=49466

该错误似乎尚未修复,因此您在 .Net 应用程序中对此无能为力。

在错误描述中,据说这是 ODBC 连接器特定的问题。我不能 100% 确定情况确实如此。如果您切换到 .Net 连接器,也请发布消息并告诉我们这是否解决了问题。

关于c# - 从批处理语句中获取异常详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192966/

相关文章:

c# - C# 和 Php 的 Unicode 问题

.net - 如何删除标签控件中的填充?

php - 如何防止替换字符在 PHP 中变成 html 实体?

c# - 在任务中包装 Start() 方法和 Completed 事件

c# - 在 C# 中包装 C++ 类 DLL

c# - SqlCommandBuilder 内部连接更新

php - 如何管理基于 AJAX 的 'like/dislike' 功能?

c# - 如何针对不同的构建配置使用项目中的不同文件 - Visual Studio C# .net

c# - Process.Start 指定文化

php - 哪个更快更轻-mysqli & PDO