asp.net mysql 连接池_C# asp.net SQLServer 连接池

原由:许多用户可能在查询相同的数据库以获取相同的数据。在这些情况下,可以通过使应用程序共享到数据源的连接来提高应用程序的性能。否则,让每个用户打开和关闭单独的连接的开销会对应用程序性能产生不利影响。这样就有了连接池。

实现:

C#在连接字符串中设置连接池。

如果使用的是 OleDbConnection、OdbcConnection 或 OracleConnection 类,则连接池将由提供程序自动处理,所以您不必自己进行管理。

如果使用的是 SqlConnection 类,则连接池被隐式管理,但也提供选项允许您自己管理池。

连接使用Open()方法打开连接,这时候连接池就会初始化并建立设定的最小连接数。在使用完连接时一定要关闭连接,以便连接可以返回池。要关闭连接使用Close()

当连接数满了并且申请连接的时间超过设置连接等待的时间时,使用“异步进程”,对数据库进行异步操作,确保连接能够及时调用Close方法关闭连接,这样能大大减少正在使用的连接数。

例子:

以下示例使用C# 连接SQL数据库:

class DbConn

{

//using System.Data;

//using System.Data.SqlClient;

private const int MaxPool = 10; //最大连接数

private const int MinPool = 5; //最小连接数

private const bool Asyn_Process = true; //设置异步访问数据库

private const bool Mars = true; //在单个连接上得到和管理多个、仅向前引用和只读的结果集(ADO.NET2.0)

private const int Conn_Timeout = 15; //设置连接等待时间

private const int Conn_Lifetime = 15; //设置连接的生命周期

private string ConnString = ""; //连接字符串

private SqlConnection SqlDrConn = null; //连接对象

public DbConn()//构造函数

{

ConnString = GetConnString();

SqlDrConn = new SqlConnection(ConnString);

}

private string GetConnString()

{

return "server=localhost;"

+ "integrated security=sspi;"

+ "database=pubs;"

+ "Max Pool Size=" + MaxPool + ";"

+ "Min Pool Size=" + MinPool + ";"

+ "Connect Timeout=" + Conn_Timeout + ";"

+ "Connection Lifetime=" + Conn_Lifetime + ";"

+"Asynchronous Processing=" + Asyn_Process + ";";

//+ "MultipleActiveResultSets=" + Mars + ";";

}

public DataTable GetDataReader(string StrSql)//数据查询

{

//当连接处于打开状态时关闭,然后再打开,避免有时候数据不能及时更新

if (SqlDrConn.State == ConnectionState.Open)

{

SqlDrConn.Close();

}

try

{

SqlDrConn.Open();

SqlCommand SqlCmd = new SqlCommand(StrSql, SqlDrConn);

SqlDataReader SqlDr = SqlCmd.ExecuteReader();

if (SqlDr.HasRows)

{

DataTable dt = new DataTable();

//读取SqlDataReader里的内容

dt.Load(SqlDr);

//关闭对象和连接

SqlDr.Close();

SqlDrConn.Close();

return dt;

}

return null;

}

catch (Exception ex)

{

System.Windows.Forms.MessageBox.Show(ex.Message);

return null;

}

finally

{

SqlDrConn.Close();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值