无梦家园

无梦家园
posts - 21, comments - 151, trackbacks - 8, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

从发布的DbHelper谈谈一点想法

Posted on 2007-04-25 23:24 沧桑雨迢迢 阅读(1668) 评论(17)  编辑 收藏 网摘 所属分类: 随想

      今天发了我以前设计的一个DbHelper组件在博客上,得到了大家的一些反映和评论.看到大家的关注和评论,心里很高兴啊.
      说实话,我这个DbHelper其实没什么技术含量,写起来,熟悉下几个ado.net类,模仿下微软企业库数据操作组件的编码接口,一般2~3小时差不多就能写好.相比一些高手的数据组件,那是大大的不如.
      那么它是无病呻吟,浪费时间的吗?
      我的可怜的DbHelper,真是个面有菜色的孩子,它除了封装了几个比较"物理级"的编程概念外,几乎没做任何事.它没有XXX,它没有YYY,它没有ZZZ...它没有时髦的外衣,它是如此清光溜溜,以至于让我心怀愧疚...
      但是,我想说,它是一个有四肢,有大脑的孩子,它是从ado.net这个胚胎发育来的,它不是从石头里蹦出来的...所谓麻雀虽小,五脏俱全,可以用在它身上 :)
      它的出现其实是个折中的方案,一些原因,如:公司对新技术的谨慎态度,公司内部无良好的数据操作类,而我比较喜欢ms 数据操作组件舒适的编码接口...于是它出现了.
      它是简单的,它是小巧的,它是健全的,它也是健壮的!
      就像一个普通人一样,它没有什么让人惊奇赞叹的地方,但它安静的,平静的生存着,至少在我这里,它得到了价值的体现,被我应用在几个项目之中,找到了它存在的意义.
      这里我想说一句话:
            美丽是用来欣赏而不是用来判断的,技术是拿来用而不是用来意淫的.
      (注意:前半句是我从小说中看到的,后半句是我原创的,转载请声明出处,否则需要考虑法律后果,嘿嘿.)
      使用它,学习曲线和成本是零!如果你的系统或项目不是很大,公司对新技术过于谨慎,又没操作良好的数据操作类,那么它是不错的选择,否则,请你考虑使用微软的企业库或其他第三方的更强更猛的数据操作组件.
      ok,写到这,俺要回女朋友的短信了...闪之~~~

Feedback

#1楼    回复  引用  查看    

2007-04-25 23:31 by 猪猪宝贝      
我同意大大的观点,但是有点是肯定的~~就使可以部分吸收哈哈~~
我也研究过这个了~~口水下~~

#2楼    回复  引用  查看    

2007-04-25 23:50 by Clingingboy      
有道理,什么的公司对新技术过于谨慎,楼主发布的DbHelper,熟悉ADO.NET的,应该花一点时间就看懂了.底层还不一样的?够用就好,支持原创,支持楼主!!!

#3楼    回复  引用  查看    

2007-04-26 01:56 by 极地银狐.NET      
好多形容词,广告?

#4楼    回复  引用  查看    

2007-04-26 06:40 by Phinecos(洞庭散人)      
简单就是美

#5楼    回复  引用    

2007-04-26 08:07 by 实话人 [未注册用户]
搞那么复杂干吗?
听棠的那个东西好啊,不过又怎么样,说不维护就不维护就不维护了。
简单就是美。

#6楼    回复  引用  查看    

2007-04-26 09:13 by xiao_p      
在首页发这种东西,还解释一遍,楼主不累吗?
直接发新手区个人感觉就ok了。

#7楼    回复  引用    

2007-04-26 09:39 by 路人 [未注册用户]
首页到底怎么了?越来越多地看到这种东西!

#8楼    回复  引用  查看    

2007-04-26 11:18 by kiler      
晕死,用不着再发一篇文章吧。

我为什么说是浪费时间呢,原因很简单,你做的东西永远比不过EnterpriseLibrary,你的DbHelper能实现的东西EnterpriseLibrary也可以实现,如果你好好看一下EnterpriseLibrary,你会觉得EnterpriseLibrary的使用是更方便的。

顺便再说一句,你的DbHelper设计也是有点问题的,查完数据库连数据连接都不关的,打开和关闭数据库连接也不作做捕获异常处理,这样的dbhelper使用起来会出不少问题,肯定会经常报数据库连接过多的错误的。

我以前也很喜欢自己写DbHelper,支持多种数据库,基于这个DbHelper我还写过一个orm,但是现在看来确实是浪费时间,为什么?因为已经有更好的东西了,还要自己去造轮子,不是浪费时间是什么。

#9楼 [楼主]   回复  引用  查看    

2007-04-26 11:38 by 沧桑雨迢迢      
无语...

#10楼    回复  引用  查看    

2007-04-26 12:21 by Laser.NET      
一个东西好,是不需要自己反复说的,如果真的好,会有很多人用并且很多人帮你宣传的,反之,必定有做的还不够的地方,说多了反而不好。。继续加油,希望你最终能够做出大家真正喜欢的东西:)

#11楼    回复  引用    

2007-04-26 15:13 by wzsst [未注册用户]
to kiler
连接不是关了吗?这句: cmd.Connection.Close();

public int ExecuteNonQuery(DbCommand cmd)
{
cmd.Connection.Open();
int ret = cmd.ExecuteNonQuery();
cmd.Connection.Close();
return ret;
}


#12楼 [楼主]   回复  引用  查看    

2007-04-26 16:42 by 沧桑雨迢迢      
执行数据库操作分两种的,一种是无事务的,必须自己关闭;另一种是有事务的,关闭操作都交给事务对象了...看代码请仔细点,如果连数据库连接这样的BUG都不处理掉...dbHelper能用吗?...

#13楼    回复  引用  查看    

2007-04-26 18:19 by kiler      
你的代码我看过。

4)返回DataTable

DbHelper db = new DbHelper();
DbCommand cmd = db.GetSqlStringCommond("t1_findall");
DataTable dt = db.ExecuteDataTable(cmd);

这是你自己写的调用例子,人家看了你的例子就会这么用,怎么去关连接啊,你写的是libibrary,你不能要求别人去读你的实现代码。作为一个调用者,我理所应当的认为你关闭了连接。

打开和关闭数据库连接也不作做捕获异常处理,这个我没说错吧。

#14楼    回复  引用    

2007-04-26 20:24 by 妞妞 [未注册用户]
哪里有EnterpriseLibrary vs2005版本的下载

#15楼 [楼主]   回复  引用  查看    

2007-04-27 10:12 by 沧桑雨迢迢      
@kiler
4)返回DataTable

DbHelper db = new DbHelper();
DbCommand cmd = db.GetSqlStringCommond("t1_findall");
DataTable dt = db.ExecuteDataTable(cmd);

...在执行db.ExecuteDataTable(cmd); 时,library自动进行了connection的open和close,使用者无需关心这样"物理级"的概念...
另外,kiler,不好意思,我有点意气用事了...呵呵,欢迎你来评论~~~

#16楼    回复  引用  查看    

2007-04-27 12:35 by kiler      
@沧桑雨迢迢

呵呵,无所谓的,大家只是技术上的交流讨论,有的时候大家说话语气可能重了一点,但是对事不对人,以后有机会再交流一下。

#17楼    回复  引用  查看    

2008-09-17 18:07 by zzticzh      
写的不错 我赞同!

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-04-25 23:27 编辑过
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接: