簡體   English   中英

C#-ConnectionString屬性尚未初始化

[英]C# - The ConnectionString property has not been initialized

我只是在學習C#。 我正在嘗試以C#Windows形式制作簡單的CRUD,但在那里出現了一些錯誤。 該錯誤表明The ConnectionString property has not been initialized. 下面的代碼顯示了我如何嘗試。

App.configSQL 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM