*的类型初始值设定项引发了异常

时间:2016-07-19 15:48:34

标签: c# mysql

我的问题是我一直收到这样的错误:

  

'myproject.GV'的类型初始值设定项引发了异常。“

GV有我的班级。代码看起来很好,运行时没有错误但是在我用MySqlConnection调用conn之后会出现问题。 我尝试调用conn的示例代码是:GV.conn.Open();

在我将以下代码添加到我的程序之前,它运行正常。现在它不断抛出错误:

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();
}

1 个答案:

答案 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#?