我是写ASP出身的,习惯于用记事本写代码
在使用connection对象时,我喜欢采用最规范的方式:
dim conn as sqlconnection
dim cmd as sqlcommand
dim rs as sqldatareaderconn = New sqlConnection(Application("conn_orc"))
cmd = New sqlCommand(sqlstr, conn)
conn.Open()
rs = cmd.ExecuteReaderrs.close
conn.close这就是我说的第一种方式第二种,也是最简单的RAD方式,往页里一拖,再在程序里直接使用就可以了,自己写麻烦的声明语句第三种,是我看别人程序里写的,他将数据库连接写成了一个类,每次调用这个类的方法就可以了,具体如下
imports myconn    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
dim myconn as myconn 
dim rs as sqldatareader
dim da as sqldatadapter
dim sqlstr as stringsqlstr="select * from a"
rs=myconn.getsqlreader(sqlstr)
da=myconn.getsqladapter(sqlstr)
.
.

.
rs.close
da.dispose
myconn.close
   End Sub这是也就是第三种方式前面两种大同小异,在执行性能上可能会有所区别(也请帮忙讨论一下,哪种效率更高)第三种方式,更加的巧,不知道这种方法有没有什么漏洞或不足,想请教

解决方案 »

  1.   

    一般我是写一个 Config 类,其中实现一个 public static property 来读取连接字符串。 这个是写在 web.config 文件中的。using System;
    using System.Configuration;namespace CnybNet.Utility
    {
        public class Config
        {
            public Config()
            {   
            }        public static string ConnectionString
            {
                get
                {           
                    return ConfigurationSettings.AppSettings["ConnectionString_Server"];
                }
            }
        }
    }
    任何时候, 只要这样就能取到连接了:SqlConnection conn = new SqlConnection(Config.ConnectionString);
      

  2.   

    你使用的前面两种写法都是很不足取的, 况且用 Application 来保存连接字符串, 一看还是原来 asp 中有些人采用的做法。连接字符串分开来是最基本的, 更不要说什么分层了。 兄弟, 你要走的路还远的很。
      

  3.   

    从 asp 转到 asp.net 的开发人员, 应该好好看看这篇文章:ASP遗留的二十大积习(转载) http://www.jaron.cn/chs_scripts/9/2004-07/20040730194353-101503.html节选:    10.对“性能”过多注意.
        对ASP.NET ViewState的机制特别不满. 或者总是挖空心思迫害人家. 反倒把自己弄得很累. 如果在对付ViewState的同时多注意少连几次数据库也许更文明些.
        12.不厌其烦的写访问数据库的过程
        应该把这工作交给DataAccess Application Block. 你自己还要开关connection, 何苦呢.
      

  4.   

    数据库的访问, 不厌其烦的写, 是最低级而枯燥的编码工作。 重复这些代码会使你把时间浪费在这些无聊的事情上, 而忽略更重要的:业务逻辑, 系统架构等。 MSDN 里有发布 Application Block 啊, 用起来很方便的。 我现在使用的是斑竹 lostinet 写的 SqlScope. 感觉使用起来比 SqlHelper 更加方便。
    比如,要获取一个 DataTable, 下列语句就够了:DataTable dt = SqlScope.ExecuteDataTable("select a, b, c from YourTable");
      

  5.   

    inelm(木野狐(业精于勤荒于嬉,行成于思毁于随)) 
    没错,我是将连接串存在APPLICATION里,可是那不是起点,懂吗?
    真正的连接串还是在web.config文件中,只是在系统启动时,APPLICATION会自动把连接串存到APPLICATION变量中,这样有问题吗?
    我写得太简单了,造成你的误解是我的不对我所说的第三种方式,和你所说的SqlScope难道不是一回事吗?
      

  6.   

    还有,我所指的第三种方式,也就是建立专用类访问数据库,并返回的数据集或进行存储过程的操作可以针对SQL SERVER、ORACLE、DB2等多种大型数据库,你的那什么Application Block 好像只用于SQLSERVER吧?挨你一通骂,发现其实你渡过和我一样的痛苦时光,数据访问是需要优化的,你用别人的控件,没问题,好的就应该拿来用,我只是希望能自己也开发一个能够使用更加广泛的数据访问类,希望你能明白
      

  7.   

    没有啊, 我也只是个刚入门的初学者而已。 哪里敢骂? 只是不想别人和我一样走弯路而已, 请别误会了 :)通常要访问多种数据库的话, 使用接口的方法来定义统一的 DataProvider 比较好。 然后各个不同的数据库针对接口进行具体的实现。 这个方面的范例你可以参考 petshop 的。 或者 Community Server Forums 2.0 的代码。
      

  8.   

    为什么你要写个什么CONFIG类,用我的方法,应用程序启动时,GLOBAL直接访问WEB.CONFIG岂不是更好?
      

  9.   

    数据的方法是经常使用的,每次使用都定义类显然是有点浪费
    看下SQLHELPER里,把方法做成无状态的静态方法。
    sqldatareader当使用一个时,是否显式找开或关闭CONNECTION无什么关系(当CONNECTION没打开时,会自动打完成后自动关闭)
    当同时多个sqldatareader时,建议显式地找开和关闭一个CONNECTION,不用多次打开CONNECTION所造成的浪费。
    当使用Connection时,最好使用using(){}。
    方便和复用性高的东西,往往会带来性能上的影响,看项目的要求。
    其实表层可以定义一个ICOMMAND的接口,然后到底层和类似于SQLHELPER的打交道来访问数据库,
    当数据库的改变时,只需改下SQLHELPER就OK了。
      

  10.   

    henryfan1(每天好心情(*_*)) 
    你说的这些,已经被做为公理在用了,这种简单的优化,没有从开发的角度真正减少程序员的工作量
      

  11.   

    没有从开发的角度真正减少程序员的工作量
    程序的工量,由设计确定的,
    没有好的系统框加,没有好的业务模板类,相减少自己的工作量,不太可能。
    顺便问下楼主,你能确保在整个程序中,同一条SQL语句不会出现两次,同一个功能的代码在不同模块中重写,其实很多情况工作量并不大,只是自己不知不觉时在做同一样事情。
    ftp host:61.144.244.47 ftp user:aspx ftp pass:aspx
    这是我为一个朋友录制给他看的,不用20分钟左右出一个表的增,删,改,查的业务功能(都通过建模然后手写代码完成的)基本编译过就就OK,调试基本不用,因为他们用的是同一样东西。