[英]Null Reference Exception Thrown while using connectionstring inside static classes
在我的項目中,我在非靜態類中使用了連接字符串,並且工作正常。 但是現在我正在開發一個在靜態類中使用連接字符串的項目。 在Catch塊下面的代碼中,將引發錯誤,如下所示:
NullReferenceException:對象引用未設置為對象的實例。
如果我將“ Throw”這一行注釋掉,則可以正常工作,但是我想了解我的代碼出了什么問題。
DataAccess
類:
public class DataAccess
{
static string connstr = ConfigurationManager.ConnectionStrings["DbSystem2018"].ConnectionString;
public static object GetSingleAnswer(string sql, List<SqlParameter> PList)
{
object obj = null;
SqlConnection conn = new SqlConnection(connstr);
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
if (PList != null)
{
foreach (SqlParameter p in PList)
cmd.Parameters.Add(p);
}
obj = cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw; // THIS LINE THROW THE NullReferenceException Error
}
finally
{
conn.Close();
}
return obj;
}
}
問題在於在靜態類中使用靜態連接字符串字段。 因此,有什么方法可以在不使用任何非靜態公共類的情況下解決此問題?
更新:
請注意以下幾點:
我不想使用非靜態方法,我的問題是如何使用靜態方法解決此問題。
使用靜態字段時,我們立即對其進行了初始化:
static string v1 = "hello";
但是,為什么以下代碼的初始化在返回實際的連接字符串之前會拋出null?
static string connstr = ConfigurationManager.ConnectionStrings["DbSystem2018"].ConnectionString;
順便說一句,在web.config
內部的連接字符串很好。
這個:
System.Configuration.Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (config.ConnectionStrings.ConnectionStrings.Count > 0)
{
var connString = config.ConnectionStrings.ConnectionStrings[nameOfConnectionString].ToString();
return connString;
}
是從以下位置復制粘貼: https : //www.codeproject.com/Articles/1012286/Read-web-config-Settings
問題是您正在訪問配置文件。 必須先將這些對象轉換為對象,然后才能使用它們。 這就是上面的代碼所做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.