[英]C# - The ConnectionString property has not been initialized
我只是在學習C#。 我正在嘗試以C#Windows形式制作簡單的CRUD,但在那里出現了一些錯誤。 該錯誤表明The ConnectionString property has not been initialized.
下面的代碼顯示了我如何嘗試。
App.config與SQL SERVER
連接
<connectionStrings>
<add name="connectionstr" connectionString="Data Source=DESKTOP-F8UCLUB;Initial Catalog=bug_tracker;Integrated Security=True" />
DBConnection類
class DBConnection
{
private string connectionString = ConfigurationManager.ConnectionStrings["connectionstr"].ConnectionString;
public SqlConnection GetConnection()
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
if (connection.State == ConnectionState.Closed)
{
connection.Open();
}
return connection;
}
}
}
插入功能
public void Insert(Programmer t)
{
conn.Open();
IDbTransaction trans = null;
try
{
conn.BeginTransaction();
SqlCommand sql = new SqlCommand(null, conn);
sql.CommandText = "INSERT INTO tbl_programmer VALUES(@fullName, @username, @password)";
sql.Parameters.AddWithValue("@fullName", t.FullName);
sql.Parameters.AddWithValue("@username", t.Username);
sql.Parameters.AddWithValue("@password", t.Password);
sql.Prepare();
sql.ExecuteNonQuery();
trans.Commit();
}
catch (SqlException ex)
{
trans.Rollback();
throw ex;
}
finally
{
conn.Close();
}
}
問題是
using
關鍵字。using
指令只能使用一次性物品。如果在using塊中創建任何實例,則該實例可以用大括號括起來。
public SqlConnection GetConnection()
{
SqlConnection connection = new SqlConnection(connectionString);
if (connection.State == ConnectionState.Closed)
connection.Open();
return connection;
}
由於您在調用Dispose()
的using
內部using
SqlConnection
對象,因此該對象將被SqlConnection
。
而且,如果您要退貨,則一定不要將其丟棄,而必須保留在內存中。
如果您想進一步了解它的工作原理,那么我將盡力而為:
return語句返回對象的地址,然后在該對象上調用
dispose()
,此時該地址不再保存該對象,因此拋出該異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.