一个数据库操作基类的问题 - 如何减少资源浪费

Triumph 2005-03-02 11:12:58
我写了一个数据库操作的类,包含建立连接(CONN)以及其它常用的操作,如获取数据集(GetData),执行SQL语句(ExecuteSQL)等。在 New 过程中建立与数据库的连接,在 Dispose 过程中关闭和释放连接。还有其它很多个类用于封装数据库操作,如有一个 CUser 类,有一个方法是 AddUser(...) ,根据参数添加用户,具体向数据库添加的操作已经封装起来。

问题是其它这些类都继承自数据库操作的基类,每个类在 New 时都要 Mybase.New 一下,这样就要重新建立连接,这样就造成重复建立多个连接,实际用一个连接就可以了,因为操作的都是同一个数据库。

我想问各位,如何只创建一个连接而让所有的类都可以使用。如果不行的话,现在这样重复创建连接会对系统资源占用多少,对速度有何影响?
...全文
325 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jarryjie 2005-03-03
  • 打赏
  • 举报
回复
我定义的基类
public class DataAccessBase : IDisposable
{
protected SqlDataAdapter dsCommand;
protected SqlCommand selectCommand;
protected SqlCommand insertCommand;
protected SqlCommand updateCommand;
protected SqlCommand deleteCommand;
protected SqlParameterCollection sqlParams;
protected SqlConnection conn;

public DataAccessBase()
{
dsCommand = new SqlDataAdapter();
conn = new SqlConnection(FuShangConfiguration.ConnectionString);

}

#region public void Dispose()
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(true);
}
#endregion
}
}
Triumph 2005-03-03
  • 打赏
  • 举报
回复
各位:多次建立连接不会影响速度和资源?
wjcking 2005-03-03
  • 打赏
  • 举报
回复
';l
nga96 2005-03-02
  • 打赏
  • 举报
回复
UP,要么自己写一个,要么用微软的
_甲壳虫 2005-03-02
  • 打赏
  • 举报
回复
基类中增加两个:构造函数(Class(SqlConnection sqlconn))和一个getConn属性或方法
getConn属性或方法作为获得连接,然后New的时候把连接作为参数传递给构造函数。
gshope 2005-03-02
  • 打赏
  • 举报
回复
这个类就是数据库操作,把其它的类(CUser什么的)都拿出去.而且不要随便继承该类.
v192 2005-03-02
  • 打赏
  • 举报
回复
……用静态类还不如用单例,老实说觉得你这个构架思路上有些问题,你应该重新考虑。你要明白数据连接的是用原则是用了马上就放开连接,而不是你设想的那样一个连接一直握在手里什么时候需要什么时候拿出来用,那样的话你的数据库服务器挨不住几个并发用户连接就挂了
evaELLIS 2005-03-02
  • 打赏
  • 举报
回复
做成静态类,或是继承某个类,来实现比较容易,也方便
Triumph 2005-03-02
  • 打赏
  • 举报
回复
jierry007(风起云涌) :
静态类如何创建连接呢?不会每个过程都建立吧,那样不是更浪费吗?
dna_xp 2005-03-02
  • 打赏
  • 举报
回复
不如把代码贴出来大家看看
jierry007 2005-03-02
  • 打赏
  • 举报
回复
做成静态类
v192 2005-03-02
  • 打赏
  • 举报
回复
……我想说你每次都去New一个对象是正确的做法,因为每次进行完数据操作之后应该立即关闭数据库连接,这样才会减少占用数据库资源。

而且你的这个设计,感觉上很不好,效率比较低。
LoveCherry 2005-03-02
  • 打赏
  • 举报
回复
微软的DAAB
http://www.microsoft.com/downloads/details.aspx?FamilyId=F63D1F0A-9877-4A7B-88EC-0426B48DF275&displaylang=en
fallback 2005-03-02
  • 打赏
  • 举报
回复
顶了在说
zipo 2005-03-02
  • 打赏
  • 举报
回复
帮顶!
Jack2013tong 2005-03-02
  • 打赏
  • 举报
回复
学习
Triumph 2005-03-02
  • 打赏
  • 举报
回复
也就是说多次建立连接不会影响速度和资源了?
3gold 2005-03-02
  • 打赏
  • 举报
回复
客户端你的操作完后,连接是会自动释放的。所以只要你程序没问题就不会有很多连接的问题。而在服务器端ADO.NET是默认使用连接池,所以不会有经常建立连接的问题。
Triumph 2005-03-02
  • 打赏
  • 举报
回复
反复建立连接并关闭释放是会节省资源,但会不会影响速度?

比如,在PAGE的LOAD里需要执行一个查询,一个更新,一个删除,那么是反复建立三个连接执行快,还是只建立一个连接执行快呢?

cqhydz 2005-03-02
  • 打赏
  • 举报
回复
没关系啊你只要将你的连接串传入就行了,微软在程序完程后会为你将资源全部消除的。老实说这种代码真才是经典 。
加载更多回复(2)

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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