asp.net与sqlserver数据库连接管理问题
我对数据库的连接有两种方式
一种是连完就断,发起请求后在开新连接,如
public class ZqSql{
public const string connstr = "Server=.;DataBase=northwind;UID=sa;PWD=zq ";
public static IDataReader GetDataReader(string sqlstr)
{
SqlConnection conn = new SqlConnection(connstr);
conn.Open();
SqlCommand cmd = new SqlCommand(sqlstr,conn);
cmd.CommandType = CommandType.Text;
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
using(DataTable dt = ZqSql.GetDataTable( "select * from employees "))
{
DataGrid1.DataSource = dt;
DataGrid1.DataBind();
}
还有一种就是当发起一次请求读数据库是,开一个连接并一直处于连接状态,当再发起读数据库也用这个连接,除非这个连接被关闭或为null时,再开一个新连接
public class ZqSqlEx{
public const string connstr = "Server=/;DataBase=pubs;UID=sa;PWD=zq ";
private static SqlConnection conn;
private static SqlCommand cmd;
public static IDataReader GetDataReader(string sqlstr)
{
OpenConnection();
cmd = new SqlCommand(sqlstr,conn);
cmd.CommandType = CommandType.Text;
return cmd.ExecuteReader();
}
private static void OpenConnection(){
if(conn == null){
conn = new SqlConnection(connstr);
conn.Open();
}
else{
if(conn.State == ConnectionState.Closed){
conn.Open();
}
}
}
我的理解是数据库的连接是存在于web服务器与数据库服务器之间的,当采用第一种方案时,每当用户提交与数据库相关的请求,就开关一次连接;当采用第二种方案时,无论用户提交多少次都只开一个连接。
请问各位那种方案更好,或则还有更好的连接方案请不吝赐教!!
我发现当我第一次连接并关闭本次连接后,数据库中还有一个连接,将这个连接强行断掉后,再连的第一次就是一般网络错误,重连就好了,请问这是为什么?
------解决方案--------------------web用第一种/win用第二种
------解决方案--------------------我使用的是SQL 2000和VS2003 在对数据库操作的时候只存在2种``
就是连接模式和断开模式的``如果使用DataReader 就使用的是连接模式``因为DataReader 要求与数据库处于连接状态才能使用``,DataSet就是断开模式的从数据库里获取信息填充到DataSet里就行了```
------解决方案--------------------当采用第一种方案时,每当用户提交与数据库相关的请求,就开关一次连接;
-----------------------------
这个正确
当采用第二种方案时,无论用户提交多少次都只开一个连接。
------------------------------------------
如果你的网站只有1个用户也正确,如果你的网站有多个用户就惨了,就会每个用户都站1个链接,并且不关闭,或者是所有用户都只有1个不关闭的链接,这个时候网站就等死了。
强烈建议使用第一种方法。数据库链接是很宝贵的资源,千万不能占着不放,用完就放要
我发现当我第一次连接并关闭本次连接后,数据库中还有一个连接,将这个连接强行断掉后,再连的第一次就是一般网络错误,重连就好了,请问这是为什么?
--------------------------------
网上搜索下连接池的概念看看
------解决方案--------------------1连接用完关闭,这是很早就说了
还有一个,全完可以同时开两个连接,前提是一成立
------解决方案--------------------如果你的网站只有1个用户也正确,如果你的网站有多个用户就惨了,就会每个用户都站1个链接,并且不关闭,或者是所有用户都只有1个不关闭的链接,这个时候网站就等死了