CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

这几种ASP.NET连数据库的方式,哪种是对的呢?疑惑中... 不是道有没有标准答案

楼主dh_98(逗号)2003-08-04 13:45:34 在 .NET技术 / ASP.NET 提问

1.   每执行一条SQL语句,连接一次:  
    conn.Open()         conn.execute         conn.Close()  
  2.   每张网页连接一次:  
    PageLoad()里   conn.Open()  
    然后执行多条SQL语句  
    PageUnLoad()里 conn.Close()       ...     (有这个PageUnLoad()函数吗?)  
  3.   每个网站连接一次:  
    Application_Start()里:conn.Open(),并把这个conn只存在Application变量里。  
      各个网页各个执行SQL语句的地方:Application("conn").Execute(SQL);  
    Application_End()里:conn.Close()  
  问题点数:100、回复次数:12Top

1 楼freecs(北狼)回复于 2003-08-04 13:52:23 得分 10

第一种是正确的  
  每一次数据库操作就   打开一次,   然后使用,用完后立刻关闭Top

2 楼dh_98(逗号)回复于 2003-08-04 13:55:14 得分 0

有没有什么理由呢? 我按照第二种做,感觉好像也是可以的。Top

3 楼xu0007()回复于 2003-08-04 13:56:18 得分 10

如果能每张网页只连接一次的话,还是2好,尽量少的打开数据库,但打开后要记得关!Top

4 楼xu0007()回复于 2003-08-04 13:58:01 得分 10

数据库每次打开都需要资源和时间的。所以在不影响功能的情况下尽量少打开为妙!Top

5 楼houbinbin()回复于 2003-08-04 13:58:35 得分 0

建议采用第一种方式操作。  
  理由如下:  
  1、每次操作之前建立连接,保证在操作时连接的有效性,提高可靠性。  
  2、操作完马上关闭,便于释放资源,提高系统性能。  
  3、采用Application变量会站用系统资源。Top

6 楼panyee(快乐王子)回复于 2003-08-04 14:00:24 得分 20

你的几种方式实现起来都不算错误  
   
  但从效率和安全性上考虑,第一和第二种会比较合适,   第三种不太好  
  看你页面要做的sql操作的多少,   决定用哪一种方式省资源又安全Top

7 楼dh_98(逗号)回复于 2003-08-04 14:04:04 得分 0

Oh,Yes.   那我按照第二种,现在有一个问题:  
  我有一个数据库操作的类:  
    public   class   DatabaseWork  
    {  
                  SqlConnection   conn;  
                  public   DatabaseWork()       //   构造函数  
                  {  
                            conn   =   new   SqlConnection("....");  
                            conn.Open();  
                  }  
                  public   DataSet   ListUser(string   UserName)  
                  {  
                            DataSet   ds;  
                            conn.execute   ....  
                            return   ds;  
                  }  
                  public   DataSet   ListComment(string   UserName)  
                  {  
                            DataSet   ds;  
                            conn.execute     ....  
                            return   ds;  
                  }  
            }  
  在网页中用的时候:  
    DatabaseWork   db=   new   DatabaseWork();  
          DataSet   ds=db.ListUser("abc");  
          DataSet   ds2=db.ListComment("abc");  
  是可以的,但操作多了,就会报那个“池连接错误”,意思是Conn没有Close();  
   
  我的问题是,应该在哪里写conn.Close()呢?Top

8 楼shixueli(我们总是不能随心所欲)回复于 2003-08-04 14:07:58 得分 15

好的方法应该是在pageload里面打开,  
  在PreRender里面关闭,因为用户触发一个比如说click事件之后,可能pageload要用连接,在click事件处理代码里面也用到,这样就会浪费掉一个open。  
  而PreRender事件是在页面呈现给用户之前执行最后一个事件,不管怎么样pageload和prerender总是要执行的Top

9 楼shixueli(我们总是不能随心所欲)回复于 2003-08-04 14:09:20 得分 10

用dataset之前必须把连接关闭,因为dataset不需要Top

10 楼shixueli(我们总是不能随心所欲)回复于 2003-08-04 14:12:31 得分 0

又说错了,是SqlDataAdapter,不是DataSetTop

11 楼weki(小李)回复于 2003-08-04 14:13:40 得分 15

 
   
  在每个:  
    public   DataSet   ListComment(string   UserName)  
                  {  
                            conn.Open()  
        //执行内容  
   
                            conn.Close()  
                  }  
   
  我一般是这样做的.  
  然后在在要使用   ListComment()的时候就调用一下。  
  Top

12 楼shixueli(我们总是不能随心所欲)回复于 2003-08-04 14:30:59 得分 10

第二中方法也有一个弊端,就是如果在比如说一个button的click事件里面处理代码很多,又是与数据库操作无关的,在执行这段代码的时候,数据库连接是开着的,  
  这就浪费了:)  
  --Top

相关问题

  • 哪种数据库?
  • asp 数据库
  • 哪种数据库好
  • ★选哪种数据库好?
  • ☆选哪种数据库好?
  • ◇选哪种数据库好?
  • ASP与数据库
  • ASP+SQL数据库
  • asp连数据库
  • 数据库查询连接的疑惑

关键词

  • 数据库
  • 执行
  • 连接
  • 语句
  • 网页
  • 代码
  • ds
  • application
  • db
  • sql

得分解答快速导航

  • 帖主:dh_98
  • freecs
  • xu0007
  • xu0007
  • panyee
  • shixueli
  • shixueli
  • weki
  • shixueli

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo