C#连接变为空

Car*_*ira 2 c# mysql asp.net connection null

我正在开发一个类来管理Mysql数据库上的操作.我有以下代码:

 using System;
using MySql.Data.MySqlClient;

public class MysqlAccess
{
    private MySqlConnection pCnn;
    public enum OperationType {Select = 1,Insert = 2,Update = 3,Delete = 4};

    public MysqlAccess()
    {

        MySqlConnection Connection=new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["LocalMySqlServer"].ConnectionString);


    }

   public MySqlConnection Connection { get {return pCnn;} set {pCnn=value;} }


    public int Connect()
    {
        try
        {

            Connection.Open();

            if (Connection.State == System.Data.ConnectionState.Open)
            {
                return 1;
            }
            else
            {
                return 0;
            }

        }
        catch (Exception e)
        {
            return -1;

        }
    }



    }

}
Run Code Online (Sandbox Code Playgroud)

页面加载代码

 protected void Page_Load(object sender, EventArgs e)
    {

        MysqlAccess DBManager = new MysqlAccess();


        DBManager.Connect();
        Response.Write("Connection State:" + DBManager.Connection.State.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

当我做响应.写连接为空,为什么?

提前致谢!

Dar*_*rov 7

好吧,它是null,因为你从未真正初始化该Connection属性,并且在初始化之前它将为null.所以代替:

public MysqlAccess()
{
    // Here you are initializing a local variable 
    // that is subject to GC and goes into the void of forgetfulness
    MySqlConnection Connection=new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["LocalMySqlServer"].ConnectionString);
}
Run Code Online (Sandbox Code Playgroud)

初始化属性:

public MysqlAccess()
{
    var connectionString = ConfigurationManager.ConnectionStrings["LocalMySqlServer"].ConnectionString;
    // The 'this' keyword is optional here and its usage is a 
    // matter of personal preference
    this.Connection = new MySqlConnection(connectionString);
}
Run Code Online (Sandbox Code Playgroud)

虽然这可能会修复NullReferenceException,但是您应该知道MySqlConnection实现IDisposable意味着您应该确保调用Dispose方法以避免泄漏连接或在每个请求上创建新连接,这在Web应用程序中可能特别灾难性.