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)
当我做响应.写连接为空,为什么?
提前致谢!
好吧,它是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应用程序中可能特别灾难性.
| 归档时间: |
|
| 查看次数: |
1349 次 |
| 最近记录: |