夏天的天气就是容易犯困.你看,小菜已经趴在桌上睡着了.
小菜又来回到梦中那熟悉的地方:Discuz公司.
老大看到小菜,说到:小菜啊,孺鸟可教也,现在我给你分配新任务,你收拾一下东西,到数据访问层小组那去,那里正缺人呢.

小菜到数据访问层小组后,与小组成员进行了沟通了解到如下信息.
Discuz!NT2.0 将支持多种数据库 Access,SqlServer,MySql
所以我们设计出来的数据库层架构要合理,而且要方便调用,始终坚持各种数据库的访问方式一致性.
(看来这次任务不简单啊,老大把小菜当大菜使用啊.)

小菜有点而心虚了,好久没有写过访问数据库操作了,都快忘的一干二净了.
不过俺不怕.因为俺有SDK2.0文档.赶紧回去复习一下.
小菜打算先针对Sql数据库进行设计然后再将其扩展成支持多种数据库.
小菜始终认为,心急吃不了热豆腐,我们要步步为营,不管是现在的敏捷开发,还是单元测试,其实讲的都是这个道理.

小菜从小组其它成员那拿到了已经设计好的SQL数据库discuz(小菜也希望在之后的文章中分析该数据库的设计,因为很经典)
 表:dnt_forums(论坛版块信息)        这个表被小菜简化了,因为这样更能说明问题

序号

字段名

类型

长度

说明

1

fid

int

4

论坛fid

2

name

nchar

50

论坛名称

表:dnt_forums(论坛版块信息)已有数据

fid

name

1

版块1

2

版块2

小菜准备先拿这个表练练手感,找回往日的自信.(小菜打算一步一步封装)

1)小菜第一招    管你三七二十一
也就是直接在需要访问数据库的地方,直接访问数据库,丝毫没有封装.代码重复量很大.
小菜打算输出dnt_forums表中的内容

小菜梦游Discuz!NT (第五篇 数据层设计1)using System;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Web;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data.SqlClient;
小菜梦游Discuz!NT (第五篇 数据层设计1)
小菜梦游Discuz!NT (第五篇 数据层设计1)
public partial class _Default : System.Web.UI.Page

程序输出:    1版块1 2版块2
虽然是完成了任务,但是如果试想一下,以上代码在我们的论坛中遍地开花.那将是何等的恐怖.
不过还是有一点值得表扬的,代码习惯不错,记住了,用过的要关闭与释放,如SqlConnection等

2)小菜第二招    人老了记性不好怎么办.
合理的利用using,as,is,params会有意想不到的效果.    
小菜最近记性不太好,打开了SqlConnecion等,老是放了关.有没有比较好的方法呢?
有: using 英文就是使用的意思,使用过后便会自己关闭与释放所使用的资源.

小菜梦游Discuz!NT (第五篇 数据层设计1)using System;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Web;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data.SqlClient;
小菜梦游Discuz!NT (第五篇 数据层设计1)
小菜梦游Discuz!NT (第五篇 数据层设计1)
public partial class _Default : System.Web.UI.Page

程序输出:    1版块1 2版块2
小菜刚在沾沾自喜,这时老大走了过来,看看小菜有没有进步.看到小菜的代码说到.
小菜啊!如果传入新页面一个fid,让你取出版块名称.你打算怎么做啊?
<a href="GetForumName.aspx?fid=1">取出版块名称的页面</a>
小菜心中暗喜.这有什么难的,要在老大面前展示展示.

小菜梦游Discuz!NT (第五篇 数据层设计1)using System;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Web;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data.SqlClient;
小菜梦游Discuz!NT (第五篇 数据层设计1)
小菜梦游Discuz!NT (第五篇 数据层设计1)
public partial class GetForumName : System.Web.UI.Page

程序正常输出:版块1
小菜心中又想不对啊,自言自语到,代码重复好多,这不是和之前的配置处理时遇到的问题一样嘛.
这才想到,看来老大是在考我.    老大满意的走了..

3)小菜第三招    小菜小封装
现在很多的开源代码如果没有使用ORM,基本上都会看到 数据库访问帮助类如SqlHelper.
小菜也打算自己弄个SqlHelper来封装对Sql数据库的访问操作.看来我们的代码质量又得到了一定的提高.那我们就继续努力吧,把SqlHelper改造成功能强大的Sql数据库操作类吧.

小菜梦游Discuz!NT (第五篇 数据层设计1)using System;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data.SqlClient;
小菜梦游Discuz!NT (第五篇 数据层设计1)
小菜梦游Discuz!NT (第五篇 数据层设计1)
namespace Discuz.Data

那接下来,就让我们来享受这个SqlHelper帮助类的成果吧.调用它吧.
遍历dnt_forums,输出fid和name

小菜梦游Discuz!NT (第五篇 数据层设计1)using System;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Web;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data.SqlClient;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using Discuz.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
小菜梦游Discuz!NT (第五篇 数据层设计1)
public partial class _Default : System.Web.UI.Page

安fid取出name版块名

小菜梦游Discuz!NT (第五篇 数据层设计1)using System;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Web;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data.SqlClient;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using Discuz.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
小菜梦游Discuz!NT (第五篇 数据层设计1)
public partial class GetForumName : System.Web.UI.Page

嗯,感觉不错,我们的代码质量得到了很大的提高了.
但我们的SqlHelper还少了个很常用的功能ExecuteNonQuery

小菜梦游Discuz!NT (第五篇 数据层设计1)using System;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data;
小菜梦游Discuz!NT (第五篇 数据层设计1)
using System.Data.SqlClient;
小菜梦游Discuz!NT (第五篇 数据层设计1)
小菜梦游Discuz!NT (第五篇 数据层设计1)
namespace Discuz.Data

4) 小菜第四招    细细体会.
以上SqlHelper类,为微软PetShop4.0中的代码,写的比较好.

这时小菜被老娘拍醒了,,还睡呢,,太阳晒屁股了,,,快起来.....
休息,休息,,,,下篇继续努力.


相关文章:

  • 2022-12-23
  • 2021-12-27
  • 2021-12-06
  • 2022-12-23
  • 2022-02-11
  • 2021-08-18
  • 2022-01-08
  • 2021-12-09
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案