想知道我是否以正确的方式去做这件事。我正在创建一个 C# 应用程序,它从我的 App.Config.xml 文件中加载一些变量。我将这些与我从 MySQL 数据库加载的其他变量一起加载到“配置”类 (Config.cs) 中。到目前为止,这是我的班级的样子:
class Config
{
public static string ServerHostname = ConfigurationManager.AppSettings["ServerHostname"];
public static string SoftwareVersion = "v0.1a";
public static int StationID = DBConnector.GetStationID();
public static string StationDescription = DBConnector.GetStationDescription();
public static string StationName = ConfigurationManager.AppSettings["StationName"];
}
我正在使用 Config.StationName 从 DBConnector.cs 中的 MySQL 数据库中提取 Config.StationID 和 Config.StationDescription:
public static int GetStationID()
{
try
{
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
string sql = "select station_id from station_master where station_name = @station_name limit 1";
MySqlCommand cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@station_name", Config.StationName);
object result = cmd.ExecuteScalar();
conn.Close();
return Convert.ToInt32(result);
}
catch (Exception ex)
{
ErrorConnection += ex.ToString();
return 0;
}
}
public static string GetStationDescription()
{
try
{
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
string sql = "select station_description from station_master where station_id = '" + Config.StationID +"' limit 1";
MySqlCommand cmd = new MySqlCommand(sql, conn);
// cmd.Parameters.AddWithValue("@station_name", Config.StationName.ToString());
object result = cmd.ExecuteScalar();
conn.Close();
MessageBox.Show(sql);
return (result.ToString());
}
catch (Exception ex)
{
ErrorGenericDBException += ex.ToString();
MessageBox.Show(ErrorGenericDBException);
return "Error";
}
}
DBConnector.GetStationID 类工作正常。它返回我站的 int 值。但是当我尝试显示 Config.StationDescription 时,它会引发 System.NullReferenceException 异常:对象引用未设置为 Namespace.DBConnector.GetStationDescription() 处的对象实例。
我认为由于我为 Config.StationName 使用了一个静态类,所以我不必创建一个实例来引用它。我需要帮助来理解为什么它会抛出异常。