6 公共类设计
开发项目时,以类的形式来组织、封装一些常用的方法和事件,不仅可以提高代码的重用率,也大大方便了代码的管理。本系统中共创建了三个公共类文件:ClsComm.cs(公共变量定义类)、ClsDB.cs(数据库操作类)和ClsSQL.cs(基础功能模块类)。其中公共变量定义类主要用来定义系统中的全局变量,数据库操作类主要用来访问 SQL Server数据库,基础功能模块类主要用来处理业务逻辑功能,也就是实现功能窗体(陈述层)与数据库操作(数据层)的业务功能。图4是数据库操作类、基础功能模块类和功能窗体之间理论关系图。

图4 各层之间关系图
1.公共变量定义类(ClsComm.cs)设计
该类中定义了系统中使用的全局变量,主要用于系统权限控制。代码如下:
namespace DrawingSys.BaseClass
{
class ClsComm
{
#region
public static string Str_IP = ""; //服务器IP -- 默认是本机
public static int Int_Id = 0; //登录用户ID
public static string Str_UserName = ""; //登录用户名
public static int Int_SysPower = 0; //管理权限
public static int Int_AddPower = 0; //增加权限
public static int Int_EditPower = 0; //编辑权限
public static int Int_DelePower = 0; //删除权限
public static int Int_BrowPower = 0; //浏览权限
public static int Int_FindPower = 0; //查询权限
public static int Int_PrintPower = 0; //打印权限
public static int Login_Id = 0; //登录序号
#endregion
}
}
2.数据库操作类(ClsDB.cs)设计
数据库操作类主要实现的功能有:打开数据库连接、关闭数据库连接、释放数据库连接资源、传入参数并且转换为SqlParameter类型、执行参数命令文本(无返回值)、执行参数命令文本(有返回值)、将命令文本添加到SqlDataAdaper、将命令文本添加到SqlCommand。 下面是数据库操作类源代码。
private SqlConnection SqlCon; //创建连接对象 – SqlCon
(1)打开数据库连接-- SqlCon
#region
private void Open()
{
//初始化数据库连接字符串,然后通过State属性判断连接状态,如果数据库连接状态为关,则打开数据库连接。
if (SqlCon == null)
{
SqlCon = new SqlConnection("Data Source=" + BaseClass.ClsComm.Str_IP.Trim() + ";DataBase=DrawSys;User ID=sa;PWD=sa");
}
if (SqlCon.State == System.Data.ConnectionState.Closed)
SqlCon.Open();
}
#endregion
(2)关闭连接-- SqlCon
#region
public void Close()
{
if (SqlCon != null)
SqlCon.Close();
}
#endregion
(3)释放数据库连接资源-- SqlCon
#region
public void Dispose()
{
if (SqlCon != null)
{
SqlCon.Dispose();
SqlCon = null;
}
}
#endregion
(4)传入参数并且转换为SqlParameter类型
#region
public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param;
if (Size > 0)
param = new SqlParameter(ParamName, DbType, Size);
else
param = new SqlParameter(ParamName, DbType);
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
param.Value = Value;
return param;
}
#endregion
(5)执行参数命令文本(无数据库中数据返回)
#region
public int RunProc(string procName, SqlParameter[] prams)
{
SqlCommand cmd = CreateCommand(procName, prams);
cmd.ExecuteNonQuery();
this.Close();
//得到执行成功返回值
return (int)cmd.Parameters["ReturnValue"].Value;
}
public int RunProc(string procName)
{
this.Open();
SqlCommand cmd = new SqlCommand(procName, SqlCon);
cmd.ExecuteNonQuery();
this.Close();
return 1;
}
#endregion
|