这几天修改一个项目是用C# 通过调用 MySQLDriverCS.dll 类库来操作 MySql数据库,
调试的会发生以上错误(直接运行是正常的),刚开始以为是兼容性问题,吧此错误百度上一粘贴有的人说是offic 和 visual studio 的问题需要重装,实在不行重装系统就好了,可是我重装后问题依旧,后来发现不是每次执行 ExecuteNonQuery() 都报错,仔细一看原来是sql 语句写的有问题
但是try catch 捕捉不到,直接报这个错误;因为此项目是由vs2010 开发的,所以我估计是我的vs2012 和这个版本的MySQLDriverCS.dll 的兼容问题导致
下面是我还原的错误,调试的会发生以上错误(直接运行是正常的),代码如下:
using MySQLDriverCS; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string str = "select count(*1) from tab1;";//这里的特意写错的,调试时直接报错 try catch 捕捉不到 MySQLConnection conn = new MySQLConnection("Data Source=test;Password=root;User ID=root;Location=localhost"); try { conn.Open(); if (new clsSql().ExecSql(conn, str)) { Console.WriteLine("ok"); } else { Console.WriteLine("failed"); } } catch (Exception e) { Console.WriteLine(e.Message); } finally { conn.Close(); } Console.ReadKey(); } } }
这个问题出现的条件是 传入的sql语句有语法错误的时候,并且只有调试运行时才会报;
直接双击.exe 文件则没问题
我的运行条件:
win7 32位旗舰版 sp1
vs2012
MySQL 版本 mysql-essential-5.1.54-win32.msi
这个问题到不是很棘手,只不过没找到具体的原因
这是源码和MySql5.1的安装包:http://yunpan.cn/QbqqeRfQ6J8W2
我后来用同事的vs2010测试了一下是没有问题的,不报错且try catch 可以捕捉到