ODBC 的两个问题

zjcxc 2017-02-14 03:30:48
using System;
using System.Data.Odbc;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using (OdbcConnection conn = new OdbcConnection("Driver={MySQL ODBC 5.2 Unicode Driver};multi_statements=1;erver=172.16.0.148;uid=root;pwd=1234;"))
{
conn.Open();
using (OdbcCommand cmd = new OdbcCommand("select 1;select a;", conn))
{
using (OdbcDataReader reader = cmd.ExecuteReader())
{
//Console.WriteLine(reader.Command) // 如果取到 reader.Comman,在监视窗口,或命令窗口都可以查到的
try
{
Console.WriteLine(reader.Read());
Console.WriteLine(reader.NextResult());
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
}
conn.Close();
}
}
}
}

如果上代码,两个问题:
1. 如何在程序中取到 reader.Command ?在监视或命令窗口中可以,程序中取不到,代码直接出错了,说未包含 Command 定义(MSDN上确实没有查到,但监视窗口中是如何取到的 ?想在程序代码中也取)
2. i程序输出错误:ERROR [HY000] [MySQL][ODBC 5.2(w) Driver][mysqld-5.7.16-ndb-7.5.4-cluster-gpl-log]unhandled error from mysql_next_result()
这个显然不是真实的错误信息,如何能够得到真实的错误信息?如果用单句(只写 select a),可以得到正确的错误信息,但多语句的话,如果不是第1句出错,则得不到,但网络抓包是可以看到返回的包中有真实错误信息的,所以不知道有没有什么办法可以搞定
...全文
165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2017-02-15
  • 打赏
  • 举报
回复
可以的话用mysql自己的库,估计odbc只是封装,所以内部的异常都忽略掉了
zjcxc 2017-02-15
  • 打赏
  • 举报
回复
GetBaseException 是一样的 unhandled error from mysql_next_result() 应该是被封装了
EnForGrass 2017-02-14
  • 打赏
  • 举报
回复
引用 2 楼 zjcxc 的回复:
[quote=引用 1 楼 Chinajiyong 的回复:] 邹老大,您好。 1.OdbcDataReader是没有的。你直接用上面定义的OdbcCommand就行了啊 2.看看抛出得异常的innerexception
第一个问题,因为是想在 reader 处理的过程中去做一些事,需要用到 command 对象,而原来写好的东东,所以不想改成把 command 对象也传过去(要改的话,改的地方也有点多),所以想偷懒 2. exception 里面没找到[/quote] 哦。。。。 1.这个我也想不出好的方法, 再写个构造函数去传command参数? 2.看看Exception.GetBaseException http://stackoverflow.com/questions/1456563/best-way-to-check-for-inner-exception https://msdn.microsoft.com/en-us/library/system.exception.getbaseexception(v=vs.71).aspx
zjcxc 2017-02-14
  • 打赏
  • 举报
回复
引用 1 楼 Chinajiyong 的回复:
邹老大,您好。 1.OdbcDataReader是没有的。你直接用上面定义的OdbcCommand就行了啊 2.看看抛出得异常的innerexception
第一个问题,因为是想在 reader 处理的过程中去做一些事,需要用到 command 对象,而原来写好的东东,所以不想改成把 command 对象也传过去(要改的话,改的地方也有点多),所以想偷懒 2. exception 里面没找到
EnForGrass 2017-02-14
  • 打赏
  • 举报
回复
邹老大,您好。 1.OdbcDataReader是没有的。你直接用上面定义的OdbcCommand就行了啊 2.看看抛出得异常的innerexception

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧