数据访问层

数据访问层实现了一个类Database,完成了最基本的数据访问能力,包括以下功能。

(1)连接数据库:Open()。

(2)根据一个SQL查询字符串,获取一个数据集GetDataSet()。

(3)关闭数据库:Close()。

其类图如图19.6所示。

 

为了便于管理工程中的文件,在创建Database类之前,首先在工程中加入一个文件夹DataAccessLayer,用于放置数据访问层有关的文件,具体步骤为:在【解决方案资源管理器】中,右键单击工程,在弹出的菜单中选择【添加】|【新建文件夹】命令,然后将文件夹取名为DataAccessLayer即可。

在DataAccessLayer文件夹中,添加一个CS文件,取名为Database,用于实现DataBase类,实现代码如下。

代码19-11  Database类实现:DataAccessLayer/Database.cs

1.              /**********************************************************

2.              * 示例:Web系统的三层体系结构之

3.              * 数据操作层

4.              *********************************************************/

5.              using System;

6.              using System.Data;

7.              using System.Data.SqlClient;

8.              using System.Configuration;

9.             

10.             namespace NorthWind.DataLayer

11.             {

12.                                 /// <summary>

13.                                 /// Database类,用于数据访问。

14.                                 /// </summary>

15.                                 public class Database

16.                                 {

17.                                                       /// <summary>

18.                                                       /// 保护变量,数据库连接。

19.                                                       /// </summary>

20.                                                       protected SqlConnection Connection;

21.            

22.                                                       /// <summary>

23.                                                       /// 保护变量,数据库连接串。

24.                                                       /// </summary>

25.                                                       protected String ConnectionString;

26.                                                    

27.                                                       /// <summary>

28.                                                       /// 构造函数。

29.                                                       /// </summary>

30.                                                       public Database()

31.                                                       {

32.                                                                             ConnectionString =

33.                                                                             ConfigurationSettings.AppSettings ["DBConnectionString"];

34.                                                       }                

35.            

36.                                                       /// <summary>

37.                                                       /// 析构函数,关闭数据库

38.                                                       /// </summary>

39.                                                       ~Database()

40.                                                       {

41.                                                                            try

42.                                                                            {

43.                                                                                                   if (Connection != null)

44.                                                                                                         Connection.Close();

45.                                                                            }

46.                                                                            catch{}

47.                                                       }

48.            

49.                                                       /// <summary>

50.                                                       /// 保护方法,打开数据库连接。

51.                                                       /// </summary>

52.                                                       protected void Open()

53.                                                       {

54.                                                                            if (Connection == null)

55.                                                                            {

56.                                                                                                     Connection = new SqlConnection(ConnectionString);

57.                                                                            }

58.                                                                            if (Connection.State.Equals(ConnectionState.Closed))

59.                                                                            {

60.                                                                                                     Connection.Open();

61.                                                                            }

62.                                                       }

63.            

64.                                                       /// <summary>

65.                                                       /// 公有方法,关闭数据库连接。

66.                                                       /// </summary>

67.                                                       public void Close()

68.                                                       {

69.                                                                            if (Connection != null)

70.                                                                                                     Connection.Close();

71.                                                       }

72.            

73.                                                       /// <summary>

74.                                                       /// 公有方法,获取数据,返回一个DataSet。

75.                                                       /// </summary>

76.                                                       /// <param name="SqlString">Sql语句</param>

77.                                                       /// <returns>DataSet</returns>

78.                                                       public DataSet GetDataSet(String SqlString)

79.                                                       {

80.                                                                             Open();

81.                                                                             SqlDataAdapter adapter = new SqlDataAdapter(SqlString, Connection);

82.                                                                             DataSet dataset = new DataSet();

83.                                                                             adapter.Fill(dataset);

84.                                                                             Close();

85.                                                                             return dataset;

86.                                                       }

87.                                 }

88.             }

代码实现了Database类,解释如下。

(1)第1~4行为文档注释。

(2)第5~8行为系统引入的.NET命名空间。

(3)第17~25行定义了Database类的两个保护成员Connection和ConnectionString,分别为其数据库连接对象和连接字符串。

(4)第27~34行实现了Database的构造方法,在构造方法中,Database读取了配置文件,并因此获取了连接字符串。

把数据库连接字符串写在配置文件中,是常用的一种方式,这种方式便于系统的部署和配置。具体实现为,在工程的Web.Config文件中,添加如下代码。

<appSettings>

     <add        key="DBConnectionString"

                  value="server=(local);database=NorthWind;User Id=sa;pwd=sa"/>

</appSettings>

Web.Config文件是一个XML文档,可以为同一目录及子目录中的文件提供配置信息。如果想要添加一个工程级别的配置属性,可以通过标签<appSettings><appSettings>实现。

本例所添加的代码中,就为整个工程添加了一个配置属性DBConnectionString,在工程的任意文件中,都可以通过ConfigurationSettings类的AppSetting属性来获取其值,如代码第32、33行所示。

(5)第36~47行实现了Database类的析构函数,使对象在销毁前,断开数据库连接。

(6)第49~62行实现了Open方法,根据ConnectionString属性,连接数据库。

(7)第64~71行实现了Close方法,关闭已经连接的数据库。

(8)第73~86行实现了GetDataSet方法,该方法接受一个SQL查询字符串SqlString,然后根据已经连接的数据库,返回查询结果数据集,详细实现技术,可参考【10.4.3】节介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值