我对数据库的连接有两种方式
一种是连完就断,发起请求后在开新连接,如
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服务器与数据库服务器之间的,当采用第一种方案时,每当用户提交与数据库相关的请求,就开关一次连接;当采用第二种方案时,无论用户提交多少次都只开一个连接。
请问各位那种方案更好,或则还有更好的连接方案请不吝赐教!!
我发现当我第一次连接并关闭本次连接后,数据库中还有一个连接,将这个连接强行断掉后,再连的第一次就是一般网络错误,重连就好了,请问这是为什么?
一种是连完就断,发起请求后在开新连接,如
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服务器与数据库服务器之间的,当采用第一种方案时,每当用户提交与数据库相关的请求,就开关一次连接;当采用第二种方案时,无论用户提交多少次都只开一个连接。
请问各位那种方案更好,或则还有更好的连接方案请不吝赐教!!
我发现当我第一次连接并关闭本次连接后,数据库中还有一个连接,将这个连接强行断掉后,再连的第一次就是一般网络错误,重连就好了,请问这是为什么?
解决方案 »
- JS弹出一个DIV
- 关于手写触发事件
- 求助!用C#操作WORD生成多个表格时,如何使得上下相邻表格之间没有空行?
- |zyciis| 请问一下哪里有.NET 正则表达式的电子书下载啊 我买了精通正则表达式(电子工业出版社 Jeffrey E.F. Friedl著) 的但看起来没用
- 字段如何处理再绑定?
- 怎样实现url伪静态???
- 我把一张表中的内容分别存在两个表中,可是我在查询时如何把这两个表的数据都检索出来呢
- =====静态用户控件的button事件无法被激发
- 如何在.vb里写控制image控件的语句?
- 新手的问题--如何在用户控件中刷新调用该控件的的页面的一个repeater控件??(在线)
- 新手弱问
- 请教输出DataTable到Excel的文件名是乱码以及输出记录的格式设置
就是连接模式和断开模式的``如果使用DataReader 就使用的是连接模式``因为DataReader 要求与数据库处于连接状态才能使用``,DataSet就是断开模式的从数据库里获取信息填充到DataSet里就行了```
---------------------------------------------------------------------------------
我来补充点,如果lz是搞web开发,上面的建议就非常重要了!!