Интересно, правильно ли я пойду? Я создаю приложение C #, которое загружает несколько переменных из моего файла App.Config.xml. Я загружаю их в класс «config» (Config.cs) вместе с другими переменными, которые я загружаю из базы данных MySQL. Вот так выглядит мой класс:
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 для извлечения Config.StationID и Config.StationDescription из базы данных MySQL, например, в DBConnector.cs:
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, мне не нужно создавать экземпляр для ссылки на него. Мне нужна помощь, чтобы понять, почему это исключение.