请问在一个页面中只连接一次数据库,该怎么做?谢谢!

windy_wzh 2005-07-05 11:58:45
比如,我想在page_load中连接一次数据库后,再其他事件中就不需再连接,可我这样写:

public void Page_Load(object sender, System.EventArgs e)
{

//连接数据库
string str = ConfigurationSettings.AppSettings["DBConnectStringForHT"];
SqlConnection conn = new SqlConnection(str);
conn.Open();
}

再其他事件或函数中打开数据库:

public int TemCount(int TemLevel,int TemKind)
{
int Ccount = 0;
string countSql = "select count(*) from DB_Template where TemLevel="+TemLevel +" and TemKind = " + TemKind;

SqlCommand Ccomm = new SqlCommand(countSql,conn);
SqlDataReader Crd = Ccomm.ExecuteReader();

...
}

这样就会提示出错,没有conn,请问要怎样才能实现连接一次数据库后,就可以直接调用,而不需重新再连接了,谢谢!

...全文
175 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lj_198119811981 2005-07-06
  • 打赏
  • 举报
回复
将conn在page_load之外定义,作为公共变量就可以了。
herony420 2005-07-05
  • 打赏
  • 举报
回复
SqlConnection conn = null;
string str="";

public void Page_Load(object sender, System.EventArgs e)
{

//连接数据库
str = ConfigurationSettings.AppSettings["DBConnectStringForHT"];
conn = new SqlConnection(str);
conn.Open();
}
在什么时候关闭呢?
页面关闭的时候断开连接

不过,微软强烈建议连接在使用的时候再打开,使用完成后马上关闭,由于连接池的使用,虽然在代码里关闭了连接,其实是防入了连接池,这样连接并不会占用很多的资源
cdo 2005-07-05
  • 打赏
  • 举报
回复
而且conn.open()应该放在try里面.

最好先找些代码看看.
lyb_abiandbel 2005-07-05
  • 打赏
  • 举报
回复
如果是web,在web.config里面可以写的。
如果是winform,一楼可以!
cdo 2005-07-05
  • 打赏
  • 举报
回复
public void Page_Load(object sender, System.EventArgs e)
{

//连接数据库
string str = ConfigurationSettings.AppSettings["DBConnectStringForHT"];
SqlConnection conn = new SqlConnection(str);
conn.Open();
}

conn的生命域在这里已经结束了.你应该定义一个成员用来保存conn.
xataxnova 2005-07-05
  • 打赏
  • 举报
回复
虽然Page_Load 函数被设为公有,但是conn的生命周期还是会在Page_Load 执行后结束。
因此在其他函数中调用conn依然会出错。
如果图省事的话我通常会这样写:
ptivate string conStr="连接语句";
private void CONN(string CmdStr)//CmdStr为命令string
{
SqlConnection conn = new SqlConnection(conStr);
SqlCommand cmd=new SqlCommand(CmdStr,conn);

try
{
conn.Open();
//blar,blar,blar
conn.Close();
{
catch(Exception ex)
{
MesssageBox.Show("Error:"+ex.Message);
//deal with it
}
finally
{
//some thing must be done
}
}
这样每次只需要把命令作为参数传进去就行了。
另外,连接以后如果没有操作,默认15秒以后就会Time out,连接自动断开。
这样的话,用DataSet 会比较好,DataSet把数据读到内存中,直到执行UpDate才把数据更新到数据库,但是这样做比较耗内存。

在下学C#也不到两个月,写得不好,见笑了。
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 松下电工数字压力传感器用户手册详细介绍了DP-100系列数字压力传感器,涵盖其技术参数、操作方法及适用场景等,适用于各类需要精准压力测量的工业环境。 双屏显示:主屏与输出动作同步,可同时显示当前值和基准值,便于实时监控与调整。显示屏为12段字母数字显示,数字清晰易读。 三色指示:屏幕颜色随传感器状态变化(红、绿、橙),便于快速判断工作状态。 紧凑结构:尺寸仅□30mm,适合空间狭窄的安装环境。 多种操作模式:提供RUN模式(日常操作)、菜单设定模式(深入设置如输出模式切换)及PRO模式(高级功能如应差调整、复制设定)。 安全认证:DP-101(A)/102(A)型号通过特定认证,确保产品安全可靠。 复制功能:可通过数据通信将主传感器设定内容复制到其他传感器,减少人工设定错误,节省时间。 高性能传感:具备高精度,分辨率1/2,000,反应时间2.5ms(最长5,000ms可调),温度特性±0.5%F.S.,重复精度±0.1%F.S. 电子元件吸附检测:监测吸盘是否成功吸附电子元件。 总压力监测:测量管道或容器内的压力水平。 空气泄漏检测:通过压力变化检测泄漏情况。 DP-101□:适用于低压环境(-100kPa至100kPa)。 DP-102□:适用于高压环境(0kPa至1MPa)。 订购时需根据实际需求选择合适型号,考虑传感器的适用范围和工作条件。手册提供详细订购流程及注意事项,包括相关认证信息(如韩国S标志)。 复制功能:通过数据通信将主传感器设定复制到其他传感器,支持多种设定模式,避免设定错误,节省时间。 操作模式:RUN模式用于日常监控,菜单设定模式用于深入设置,PRO模式提供高级功能。 使用前需仔细阅读手册,了解各功能使用方法。遵循安全指南,正确安装和使用传感器,避免损坏。对于

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧