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

本文关键字:异常 类型 | 更新日期: 2023-09-27 17:57:45

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

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

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

导致此行为的即时错误-MySqlDataReader dr = GV.com.ExecuteReader();上静态字段初始化中的NullReferenceException(初始化字段时com为null)。当静态属性初始化过程中出现任何异常时,整个类标记为初始化失败,将来对它的任何访问都将引发您观察到的异常。更多信息可以在MSDN文章TypeInitializationException中找到。

修复:

  • 如果您真的需要静态字段中的这些数据,请将代码包装在静态方法中,该方法处理异常并且从不抛出。请注意,在静态变量中缓存读取器是非常不实用的,因为您只能从中读取一次数据。

    public static MySqlDataReader dr = StaticInitializerThatDoesNotThrow();
    
  • 更好的解决方案-根据需要重构代码以调用SQL,并正确处理连接对象。例如,请参阅正确的调用-如何从C#中的SQL Server数据库中检索数据?。