C# - ConnectionString属性尚未初始化

时间:2018-05-05 15:18:53

标签: c#

我只是在学习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();
        }
    }

2 个答案:

答案 0 :(得分:3)

  

问题是using关键字。仅使用using指令   一次性物品。

     

如果您在使用块中创建任何实例,则该实例将被废弃   花括号..

 public SqlConnection GetConnection()
    {
        SqlConnection connection = new SqlConnection(connectionString);
            if (connection.State == ConnectionState.Closed)                
                connection.Open();

            return connection;            
    }

答案 1 :(得分:1)

SqlConnection对象因为您在using内部使用Dispose()而在其上调用dispose(),因此会被处置。

如果你要归还某些东西,它一定不能被处理,它必须留在记忆中。

如果你想更多地了解它是如何工作的,那么我会尽我所能:

  

return语句返回Object的地址,然后返回   {{1}}被调用该对象,现在该地址没有   持有该Object,因此抛出该异常。