gpt4 book ai didi

C#连接变为空

转载 作者:行者123 更新时间:2023-11-29 01:12:27 25 4
gpt4 key购买 nike

我正在开发一个类来管理对 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;

}
}



}

}

页面加载代码

 protected void Page_Load(object sender, EventArgs e)
{

MysqlAccess DBManager = new MysqlAccess();


DBManager.Connect();
Response.Write("Connection State:" + DBManager.Connection.State.ToString());
}

当我执行 response.write 时,连接为空,为什么?

提前致谢!

最佳答案

嗯,它是 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);
}

初始化属性:

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);
}

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

关于C#连接变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com