我的问题是我一直收到这样的错误:
GV有我的班级。代码看起来很好,运行时没有错误但是在我用MySqlConnection调用conn之后会出现问题。 我尝试调用conn的示例代码是:GV.conn.Open();'myproject.GV'的类型初始值设定项引发了异常。“
在我将以下代码添加到我的程序之前,它运行正常。现在它不断抛出错误:
public static class GV
{
public static MySqlConnection conn = new MySqlConnection(
"server=localhost;port=3306;uid=root;database=sysdb_elearn;password=***");
public static MySqlCommand com = null;
public static MySqlDataReader dr = GV.com.ExecuteReader();
public static frmLearnerPanel flp = new frmLearnerPanel();
public static frmLogIn frmLogin = new frmLogIn();
}
答案 0 :(得分:0)
导致此行为的立即错误 - MySqlDataReader dr = GV.com.ExecuteReader();
上的静态字段初始化中的NullReferenceException(com
在初始化字段时为null)。当静态属性初始化期间出现任何异常时,整个类被标记为失败的初始化,并且将来访问它将导致您观察到的异常。有关详细信息,请参阅MSDN文章TypeInitializationException。
修复:
如果你真的需要静态字段中的这些数据 - 用静态方法包装代码来处理异常并且永不抛出。请注意,静态变量中的缓存读取器非常不实用,因为您只能从中读取一次数据。
public static MySqlDataReader dr = StaticInitializerThatDoesNotThrow();
更好的解决方案 - 根据需要调用SQL并重新配置连接对象的重构代码。即请参阅正确的电话 - How to retrieve data from a SQL Server database in C#?。