ASP.NET网上购物系统开发与实现(7)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

ASP.NET网上购物系统开发与实现(7)


 
图3-6  网上购物系统用例模型
3.3  数据层的实现
3.3.1  数据库连接/具体配置
首先进行web.config的配置,为了保持系统良好的可移植性,采用对数据库配置进行统一管理的方法,将程序中用到的所有连接字符串信息统一放于web.config配置文档中,在程序中对该文档的这一配置进行调用,实现统一更改统一使用。
对于数据库调用字符串,由于数据库使用的是本地数据库,所以对SQL Server 2008 Express版本而言,连接的SQL Server实例名默认为LISHENG-PC\SQLEXPRESS (LISHENG-PC为本地名称),当然如果是连接远程的SQL Server实例,可以修改为完整的网络路径。
   在文档中,为数据库的设置部分集中在<appSettings>与</appSettings>之间,连接字符串在<connectionStrings>与</connectionStrings>字段间。而其他的设置主要是面向应用程序。web.config配置文档相关代码如下:
<connectionStrings>
//SQL实例名
<add name="DataBaseString"connectionString="Data Source=LISHENG-PC\SQLEXPRESS;
Initial Catalog=Shop_Data;Integrated Security=True" providerName="System.Data.SqlClient"/>//使用的数据库名为Shop_Data。
</connectionStrings>
3.3.2  连接到SQL Server
用于连接SQL Server的类是SqlConnection。每当创建一个新的数据库连接时,总是要指定至少三个重要的数据:
1、将要连接的SQL Server实例名;
2、访问服务器的用户授权信息;
3、所要操作的数据库。
创建和打开一个数据库连接代码如下:
SqlConnection Connection = new SqlConnection();//生成一个对象
Connection. Connectionstring =“…connectionstring…”
Connection.open();//打开连接
3.3.3  数据访问对象(DAO)的设计和实现
下面以购物车模块为例描述数据层的设计和实现。在整个系统中,对于数据库的操作量是很大的。无论是对数据的查询、插入、删除还是修改主要是用到三个函数:QueryTable、ExecuteNonQuery和ExecuteQuery。这几个函数包含于SQLHelper.cs这个类中。
SQLHelper
-conn: SqlConnection
-cmd: SqlCommand
-sdr: SqlDataReader
+GetConn():SqlConnection
+QueryTable(sql: string):DataTable
+ExecuteNonQuery(cmdText: string, ct: CommandType):int
+ExecuteQuery(cmdText: string, ct: CommandType):DataTable
图3-7  SQLHelper类的UML类图
SQL语句都出现在数据层,是直接与数据库打交道的一层。下面对其中所用到的QueryTable、ExecuteNonQuery和ExecuteQuery进行简单介绍。
QueryTable一般是用于SQL查询时候使用,返回datatable类型的对象。它可以存储离线数据而不需要一个打开的连接。代码如下:
public DataTable QueryTable(string uid, string pid)
        {
            DataTable dt = new DataTable();//生成DataTable的对象dt
            string sql ="所要执行的sql语句";//sql语句
           //调用ExecuteQuery
            dt = new SQLHelper().ExecuteQuery(sql, CommandType.Text);
            return dt;
         }
    ExecuteNonQuery一般用在要进行数据库插入、删除和修改操作时使用,属于不返回任何记录的SQL语句或存储过程,它返回一个整数值用来说明受查询语句影响的行数。当返回值大于0时,说明数据库中的数据有变动,执行的SQL成功;而当返回值为0时,说明操作失败。代码如下: (责任编辑:qin)