1
我有一个长时间运行的程序,每5分钟执行一次mySQL-Queries(定时线程)。它运行约10小时后的引发NullReferenceException用下面的堆栈跟踪:MySqlClient.NativeDriver中的NullReferenceException
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
bei MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlDataReader.Close()
at MySql.Data.MySqlClient.MySqlCommand.ResetReader()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at MyOwnProgram.Mysql.sendData(String sqlCommmand)
SendData方法是以下的(lockDB的类型为Object)
public void sendData(string sqlCommmand) {
try {
using(MySqlCommand command = connection.CreateCommand()) {
command.CommandTimeout = 5;
command.CommandText = sqlCommmand;
lock(lockDB) {
command.ExecuteNonQuery();
}
}
} catch(MySqlException e) {
throw e;
} catch(Exception e) {
// do some logging
}
}
呼叫时,连接被打开mySQL-Class的构造函数,并在调用析构函数或调用dispose()时进行处理。有人能告诉我我做错了什么吗?
当调用MySQL-Class的构造函数时,什么反对创建连接? – 2010-10-07 07:46:57
到数据库的连接字符串。 – 2010-10-07 07:48:47
你能解释一下吗?我的连接字符串存储在设置文件中。连接存储在一个类变量中,并通过connection = new MySqlConnection(Settings.Default.ConnectionString)创建; – 2010-10-07 07:55:32