在ASP.NET
中,任何的Web
窗体页是以类的形式来组织的。因此,我们可以封装一些常用的方法和事件,这样将会在编程过程中起到事半功倍的效果。在经过对日志管理系统分析和数据库的设计后,可很容易地发现一些可以抽象为类的功能。例如,可以将数据库的连接、执行SQL
语句并得到各种返回值等,生成一个数据库类。虽然这些所有的功能,也可以在具体实现的Web
窗体页中直接实现,但使用类的封装实现,更符合面向对象编程的思想。
本系统中我们仅使用了数据库管理类以此为例,其他通用类(例如、评论管理类和字符串处理类)的实现方式类似。
数据库管理类实现的是对数据库的基础操作,例如与数据库的连接、执行SQL
语句并得到各种返回值以利于进一步使用数据库返回的结果。将数据库类命名为dbconfig
,然后添加命名空间,如下程序所示:
using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
接下来,创建一个类并声明编程时需要使用的变量。使用面向对象的说法是,实现数据库类,并为其添加成员:
public class dbconfig
{
public SqlConnection conn;
public SqlCommand cmd;
public SqlDataReader dr;
public SqlDataAdapter da;
public string strSqlConn;
}
为数据库类添加一个构造函数,使其实例化时自动创建一个连接,如下程序所示:
public dbconfig ()
{
conn = new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
conn.Open();
}
上面创建的为默认构造函数,无法指定自定义的数据库连接,通用性不好。下面为dbconfig
类重载一个构造函数,该构造函数可以在实例化时指定连接字符串,如下所示:
public dbconfig (string cstr)
{
conn = new SqlConnection(cstr);
conn.Open();
}
经过两个构造函数的创建后,数据库管理类dbconfig
的实用性能越来越好,但是目前还不具备真正的与数据库交互的功能,例如执行SQL
语句,更新和返回指定的数据等。可添加下列所示的类方法代码来完善类:
public SqlDataReader ExecuteReader(string sql)
{
cmd = new SqlCommand(sql, conn);
dr = cmd.ExecuteReader();
return dr;
}
public void ExecuteNonQuery(string sql)
{
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}
public void Update(string sql)
{
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
}
新增上述3
个方法后,dbconfig
类变得功能更强大了。再为类增加一个可以一次获取表中数据的方法,创建之后,我们可以快速地从数据库提取某个表并绑定显示到Web
窗体上,程序如下所示:
public ICollection CreateSource(string sql)
{
da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds, "mytable");
return ds.Tables["mytable"].DefaultView;
}
最后为类添加一个方法来清理资源并释放连接,通常在最后来调用。如下所示:
public void Clear()
{
strSqlConn = null;
cmd = null;
dr = null;
da = null;
conn.Close();
}
为系统添加一个Web
配置文件Web.config,
打开后在<configuration>
和</configuration>
标记之间插入如下的语句:
<appSettings>
<add key="ConnStr" value="server=ZHT;uid=sa;pwd=123456;database=myLog"/>
</appSettings>
以上语句在配置文件中添加了连接数据库时使用的字符串,指定了数据库服务器、登录数据库的名称、用户名和密码信息。然后就可以使用如下的语句创建一个数据库类的实例来连接数据库了:
//
创建数据库实例
dbconfig db = new dbconfig();