*的类型初始值设定项引发异常
本文关键字:异常 类型 | 更新日期: 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数据库中检索数据?。