版块方法(新 精)网站设计--创建公共类 
Hi,欢迎光临:zxy空间! 收藏我们

(新 精)网站设计--创建公共类

本文关键词:版块,方法,命令,参数,文本,执行,数据库连接,代码 时间:2012-12-31 21:40

新石器时代酒泉原始的农业和畜牧业英语语法知识树这样的生活,很唯美女人走向幸福婚姻的16句箴言为人处世36计,计计都值得学!古玩界十大行規赠高三学生最实用的“六句话”最 新 打 电 话 秘 籍 (有这个可以省不少电话费了)卞之琳诗选(你站在桥上看风景,看风景的人在楼上看你。 明月装饰了你的窗子,你装饰了别人的梦。)全方位查询大全4岁儿童的教育治痛经 治坐骨神经痛古今人物列传*神仙列传*真武列传(六)古诗词千年格律的改革大趋势沸腾的血液  文/天涯书境教你把照片做成视频醉人的妩媚(3)一碗牛肉面背后的故事

创建公共类(1)

在网站开发项目中以类的形式来组织、封装一些常用的方法和事件,将会在编程过程中起到事半功倍的效果。本系统中创建了8个公共类文件,分别为:DataBase.cs(数据库操作类)、AdminManage.cs(管理员功能模块类)、CardManage.cs(帖子管理功能模块类)、HostManage.cs(版主管理功能模块类)、ImageManage.cs(头像管理功能模块类)、ModuleManage.cs(版块管理功能模块类)、RevertManage.cs(回帖管理功能模块类)和UserManage.cs(用户管理功能模块类)。其中,数据层主要用来访问SQL Server 2005数据库,而其他功能模块类主要用于处理业务逻辑功能,透彻地说,就是实现网页与数据库操作(数据层)之间的业务功能。各层之间的理论关系如图23.8所示。

(点击查看大图)图23.8 各层之间关系图

创建类文件的方法为:在ASP.NET集成开发环境Visual Studio 2008的菜单中选择"项目"/"添加新项"命令,在弹出的"添加新项"对话框中选择"类"选项,并修改名称为DataBase.cs,如图23.9所示。

注意:在ASP.NET中,App_Code文件夹专门用来存放一些应用于全局的代码(如公共类),如果没有,可以在该项目上单击鼠标右键,在弹出的快捷菜单中选择"添加ASP.NET文件夹"/"App_Code"命令,添加一个App_Code文件夹。

(点击查看大图)图23.9 创建类文件

1.数据库操作类设计

数据库操作类主要实现的功能有:打开数据库连接、关闭数据库连接、释放数据库连接资源、传入参数并且转换为SqlParameter类型、执行参数命令文本(无返回值)、执行参数命令文本(有返回值)、将命令文本添加到SqlDataAdapter和将命令文本添加到SqlCommand。下面给出所有的数据库操作类源代码,并且作出详细的介绍。

在命名空间区域引用using System.Data.SqlClient命名空间。为了精确控制释放未托管资源,必须实现DataBase类的System.IDisposable接口。IDisposable接口声明了一个方法Dispose,该方法不带参数,返回Void。

相关代码如下:

  1. usingSystem;
  2. usingSystem.Data;
  3. usingSystem.Configuration;
  4. usingSystem.Web;
  5. usingSystem.Web.Security;
  6. usingSystem.Web.UI;
  7. usingSystem.Web.UI.WebControls;
  8. usingSystem.Web.UI.WebControls.WebParts;
  9. usingSystem.Web.UI.HtmlControls;
  10. usingSystem.Data.SqlClient;
  11. ///<summary>
  12. ///DataBase的摘要说明
  13. ///</summary>
  14. publicclassDataBase:IDisposable
  15. {
  16. publicDataBase()
  17. {
  18. }
  19. privateSqlConnectioncon;//创建连接对象
  20. ……
  21. ……下面编写相关的功能方法
  22. ……
  23. }

建立数据的连接主要通过SqlConnection类实现,并初始化数据库连接字符串,然后通过State属性判断连接状态,如果数据库连接状态为关,则打开数据库连接。

实现打开数据库连接Open方法的代码如下:

  1. #region打开数据库连接
  2. ///<summary>
  3. ///打开数据库连接
  4. ///</summary>
  5. privatevoidOpen()
  6. {
  7. if(con==null)//打开数据库连接
  8. {
  9. con=newSqlConnection(ConfigurationManager.
    AppSettings);
  10. }
  11. if(con.State==System.Data.ConnectionState.Closed)
  12. con.Open();
  13. }
  14. #endregion

关闭数据库连接主要通过SqlConnection对象的Close方法实现。自定义Close方法关闭数据库连接的代码如下:

  1. #region关闭连接
  2. ///<summary>
  3. ///关闭数据库连接
  4. ///</summary>
  5. publicvoidClose()
  6. {
  7. if(con!=null)
  8. con.Close();
  9. }
  10. #endregion

因为DataBase类使用System.IDisposable接口,IDisposable接口声明了一个方法Dispose,所以在此应完善IDisposable接口的Dispose方法,用来释放数据库连接资源。

创建公共类(2)

实现释放数据库连接资源的Dispose方法代码如下:

  1. #region释放数据库连接资源
  2. ///<summary>
  3. ///释放资源
  4. ///</summary>
  5. publicvoidDispose()
  6. {
  7. //确认连接是否已经关闭
  8. if(con!=null)
  9. {
  10. con.Dispose();
  11. con=null;
  12. }
  13. }
  14. #endregion

本系统向数据库中读写数据是以参数形式实现的。MakeInParam方法用于传入参数,而MakeParam方法用于转换参数。

实现MakeInParam方法和MakeParam方法的完整代码如下:

  1. #region传入参数并且转换为SqlParameter类型
  2. ///<summary>
  3. ///传入参数
  4. ///</summary>
  5. ///<paramname="ParamName">存储过程名称或命令文本</param>
  6. ///<paramname="DbType">参数类型</param></param>
  7. ///<paramname="Size">参数大小</param>
  8. ///<paramname="Value">参数值</param>
  9. ///<returns>新的parameter对象</returns>
  10. publicSqlParameterMakeInParam(stringParamName,
    SqlDbTypeDbType,intSize,objectValue)
  11. {
  12. returnMakeParam(ParamName,DbType,Size,
    ParameterDirection.Input,Value);
  13. }
  14. ///<summary>
  15. ///初始化参数值
  16. ///</summary>
  17. ///<paramname="ParamName">存储过程名称或命令文本</param>
  18. ///<paramname="DbType">参数类型</param>
  19. ///<paramname="Size">参数大小</param>
  20. ///<paramname="Direction">参数方向</param>
  21. ///<paramname="Value">参数值</param>
  22. ///<returns>新的parameter对象</returns>
  23. publicSqlParameterMakeParam(stringParamName,
    SqlDbTypeDbType,Int32Size,ParameterDirectionDirection,objectValue)
  24. {
  25. SqlParameterparam;
  26. if(Size>0)
  27. param=newSqlParameter(ParamName,DbType,Size);
  28. else
  29. param=newSqlParameter(ParamName,DbType);
  30. param.Direction=Direction;
  31. if(!(Direction==ParameterDirection.Output&&Value==null))
  32. param.Value=Value;
  33. returnparam;
  34. }
  35. #endregion

RunProc方法为可重载方法,功能分别为执行带参数SqlParameter的命令文本。RunProc(string

procName, SqlParameter prams)方法主要用于执行添加、修改和删除;RunProc(string procName)方法用来直接执行SQL语句,如数据库备份与数据库恢复。

实现可重载方法RunProc方法的完整代码如下:

  1. #region执行参数命令文本(无数据库中数据返回)
  2. ///<summary>
  3. ///执行命令
  4. ///</summary>
  5. ///<paramname="procName">命令文本</param>
  6. ///<paramname="prams">参数对象</param>
  7. ///<returns></returns>
  8. publicintRunProc(stringprocName,SqlParameterprams)
  9. {
  10. SqlCommandcmd=CreateCommand(procName,prams);
  11. cmd.ExecuteNonQuery();
  12. this.Close();
  13. //得到执行成功返回值
  14. return(int)cmd.Parameters.Value;
  15. }
  16. ///<summary>
  17. ///直接执行SQL语句
  18. ///</summary>
  19. ///<paramname="procName">命令文本</param>
  20. ///<returns></returns>
  21. publicintRunProc(stringprocName)
  22. {
  23. this.Open();
  24. SqlCommandcmd=newSqlCommand(procName,con);
  25. cmd.ExecuteNonQuery();
  26. this.Close();
  27. return1;
  28. }
  29. #endregion

RunProcReturn方法为可重载方法,返回值为DataSet类型。功能分别为执行带参数SqlParameter的命令文本。下面代码中RunProcReturn(string procName, SqlParameter prams,string tbName)方法主要用于执行带参数SqlParameter的查询命令文本;RunProcReturn(string procName, string tbName)用于直接执行查询SQL语句。
创建公共类(3)

可重载方法RunProcReturn的完整代码如下:

  1. #region执行参数命令文本(有返回值)
  2. ///<summary>
  3. ///执行查询命令文本,并且返回DataSet数据集
  4. ///</summary>
  5. ///<paramname="procName">命令文本</param>
  6. ///<paramname="prams">参数对象</param>
  7. ///<paramname="tbName">数据表名称</param>
  8. ///<returns></returns>
  9. publicDataSetRunProcReturn(stringprocName,
    SqlParameterprams,stringtbName)
  10. {
  11. SqlDataAdapterdap=CreateDataAdaper(procName,prams);
  12. DataSetds=newDataSet();
  13. dap.Fill(ds,tbName);
  14. this.Close();
  15. //得到执行成功返回值
  16. returnds;
  17. }
  18. ///<summary>
  19. ///执行命令文本,并且返回DataSet数据集
  20. ///</summary>
  21. ///<paramname="procName">命令文本</param>
  22. ///<paramname="tbName">数据表名称</param>
  23. ///<returns>DataSet</returns>
  24. publicDataSetRunProcReturn(stringprocName,stringtbName)
  25. {
  26. SqlDataAdapterdap=CreateDataAdaper(procName,null);
  27. DataSetds=newDataSet();
  28. dap.Fill(ds,tbName);
  29. this.Close();
  30. //得到执行成功返回值
  31. returnds;
  32. }
  33. #endregion

CreateDataAdaper方法可以将带参数SqlParameter的命令文本添加到SqlDataAdapter中,并执行命令文本。

CreateDataAdaper方法的完整代码如下:

  1. #region将命令文本添加到SqlDataAdapter
  2. ///<summary>
  3. ///创建一个SqlDataAdapter对象,以此来执行命令文本
  4. ///</summary>
  5. ///<paramname="procName">命令文本</param>
  6. ///<paramname="prams">参数对象</param>
  7. ///<returns></returns>
  8. privateSqlDataAdapterCreateDataAdaper
    (stringprocName,SqlParameterprams)
  9. {
  10. this.Open();
  11. SqlDataAdapterdap=newSqlDataAdapter(procName,con);
  12. dap.SelectCommand.CommandType=
    CommandType.Text;//执行类型:命令文本
  13. if(prams!=null)
  14. {
  15. foreach(SqlParameterparameterinprams)
  16. dap.SelectCommand.Parameters.Add(parameter);
  17. }
  18. //加入返回参数
  19. dap.SelectCommand.Parameters.Add(new
    SqlParameter("ReturnValue",SqlDbType.Int,4,
  20. ParameterDirection.ReturnValue,false,0,0,
  21. string.Empty,DataRowVersion.Default,null));
  22. returndap;
  23. }
  24. #endregion

CreateCommand方法可以将带参数SqlParameter的命令文本添加到CreateCommand中,并执行命令文本。

CreateCommand方法的完整代码如下:

  1. #region将命令文本添加到SqlCommand
  2. ///<summary>
  3. ///创建一个SqlCommand对象,以此来执行命令文本
  4. ///</summary>
  5. ///<paramname="procName">命令文本</param>
  6. ///<paramname="prams"命令文本所需参数</param>
  7. ///<returns>返回SqlCommand对象</returns>
  8. privateSqlCommandCreateCommand(stringprocName,
    SqlParameterprams)
  9. {
  10. //确认打开连接
  11. this.Open();
  12. SqlCommandcmd=newSqlCommand(procName,con);
  13. cmd.CommandType=CommandType.Text;//执行类型:命令文本
  14. //依次把参数传入命令文本
  15. if(prams!=null)
  16. {
  17. foreach(SqlParameterparameterinprams)
  18. cmd.Parameters.Add(parameter);
  19. }
  20. //加入返回参数
  21. cmd.Parameters.Add(
  22. newSqlParameter("ReturnValue",SqlDbType.Int,4,
  23. ParameterDirection.ReturnValue,false,0,0,
  24. string.Empty,DataRowVersion.Default,null));
  25. returncmd;
  26. }
  27. #endregion

版块管理功能模块类

版块管理功能模块类主要用于处理社区网中有关版块的业务逻辑功能。由于篇幅有限,其他功能模块类的源代码可参见本书附带光盘。

版块管理功能模块类主要用于实现版块信息的添加、修改、删除以及各种查询方式。以下方法提供给陈述层调用,从编码的角度出发,这些方法的实现是建立在数据层(数据库操作类DataBase.cs)的基础上的,下面将详细介绍。

在版块管理功能模块类中,首先定义版块信息的数据结构,代码如下:

  1. #region定义版块--数据结构
  2. privatestringmoduleid="";
  3. privatestringmodulename="";
  4. ///<summary>
  5. ///版块编号
  6. ///</summary>
  7. publicstringModuleID
  8. {
  9. get{returnmoduleid;}
  10. set{moduleid=value;}
  11. }
  12. ///<summary>
  13. ///版块名称
  14. ///</summary>
  15. publicstringModuleName
  16. {
  17. get{returnmodulename;}
  18. set{modulename=value;}
  19. }
  20. #endregion

GetMID方法主要用于实现自动生成版块编号功能,代码如下:

  1. #region自动生成版块编号
  2. ///<summary>
  3. ///自动生成版块编号
  4. ///</summary>
  5. ///<returns></returns>
  6. publicstringGetMID()
  7. {
  8. DataSetds=GetAllModule("tb_Module");
  9. stringstrCID="";
  10. if(ds.Tables.Rows.Count==0)
  11. strCID="M1001";
  12. else
  13. strCID="M"+(Convert.ToInt32(ds.
    Tables.Rows.Rows.Count-1].
    ToString().Substring(1,4))+1);
  14. returnstrCID;
  15. }
  16. #endregion

AddModule方法主要用于实现添加版块信息功能,关键技术为:创建SqlParameter参数数组,通过数据库操作类(DataBase.cs)中MakeInParam方法将参数值转换为SqlParameter类型,储存在数组中,最后调用数据库操作类(DataBase.cs)中的RunProc方法执行命令文本。代码如下:

  1. #region添加--版块信息
  2. ///<summary>
  3. ///添加--版块信息
  4. ///</summary>
  5. ///<paramname="modulemanage"></param>
  6. ///<returns></returns>
  7. publicintAddModule(ModuleManagemodulemanage)
  8. {
  9. SqlParameterprams={
  10. ata.MakeInParam("@moduleid",SqlDbType.NVarChar,
    50,modulemanage.ModuleID),
  11. data.MakeInParam("@modulename",
    SqlDbType.NVarChar,100,modulemanage.ModuleName),
  12. ;
  13. return(data.RunProc("INSERTINTOtb_Module
    (版块编号,版块名称)VALUES(@moduleid,@modulename)",prams));
  14. }
  15. #endregion

UpdateModule方法主要用于实现修改版块信息功能,代码如下:

  1. #region修改--版块信息
  2. ///<summary>
  3. ///修改--版块信息
  4. ///</summary>
  5. ///<paramname="modulemanage"></param>
  6. ///<returns></returns>
  7. publicintUpdateModule(ModuleManagemodulemanage)
  8. {
  9. SqlParameterprams={
  10. ata.MakeInParam("@moduleid",SqlDbType.NVarChar,
    50,modulemanage.ModuleID),
  11. data.MakeInParam("@modulename",
    SqlDbType.NVarChar,100,modulemanage.ModuleName),
  12. ;
  13. return(data.RunProc("updatetb_Moduleset
    版块名称=@modulenamewhere版块编号=@moduleid",prams));
  14. }
  15. #endregion

DeleteModule方法主要用于实现根据版块编号删除版块信息功能,代码如下:

  1. #region删除--版块信息
  2. ///<summary>
  3. ///删除--版块信息
  4. ///</summary>
  5. ///<paramname="modulemanage"></param>
  6. ///<returns></returns>
  7. publicintDeleteModule(ModuleManagemodulemanage)
  8. {
  9. SqlParameterprams={
  10. data.MakeInParam("@moduleid",SqlDbType.NVarChar,
    50,modulemanage.ModuleID),
  11. };
  12. return(data.RunProc("deletefromtb_Module
    where版块编号=@moduleid",prams));
  13. }
  14. #endregion

FindModuleByID、FindModuleByName和GetAllModule方法分别用来实现根据"版块编号"、"版块名称"得到所有版块信息功能,代码如下:

  1. #region查询--版块信息
  2. ///<summary>
  3. ///根据--版块编号--得到版块信息
  4. ///</summary>
  5. ///<paramname="modulemanage"></param>
  6. ///<paramname="tbName"></param>
  7. ///<returns></returns>
  8. publicDataSetFindModuleByID(ModuleManagemodulemanage,stringtbName)
  9. {
  10. SqlParameterprams={
  11. data.MakeInParam("@moduleid",SqlDbType.NVarChar,
    50,modulemanage.ModuleID+"%"),
  12. };
  13. return(data.RunProcReturn("select*from
    tb_Modulewhere版块编号like@moduleid",prams,tbName));
  14. }
  15. ///<summary>
  16. ///根据--版块名称--得到版块信息
  17. ///</summary>
  18. ///<paramname="modulemanage"></param>
  19. ///<paramname="tbName"></param>
  20. ///<returns></returns>
  21. publicDataSetFindModuleByName(ModuleManage
    modulemanage,stringtbName)
  22. {
  23. SqlParameterprams={
  24. ata.MakeInParam("@modulename",SqlDbType.NVarChar,
    100,modulemanage.ModuleName+"%"),
  25. };
  26. return(data.RunProcReturn("select*from
    tb_Modulewhere版块名称like@modulename",prams,tbName));
  27. }
  28. ///<summary>
  29. ///得到所有--版块信息
  30. ///</summary>
  31. ///<paramname="tbName"></param>
  32. ///<returns></returns>
  33. publicDataSetGetAllModule(stringtbName)
  34. {
  35. return(data.RunProcReturn("select*
    fromtb_ModuleORDERBY版块编号",tbName));
  36. }
  37. #endregion

一个女孩的爱情抉择田英章硬笔行书技法欧美超能游戏者院线版二货青年闯世界冬天泡药酒强身健体之周公百岁酒中国最可怕的骗局:连锁加盟!解决番茄生理病害以补充营养为主北京故宫馆藏钟表[30P]人体部位成语800例能让你少奋斗10年的工作经验

 0.18700194358826 s