.Net源码论坛 [ 繁体中文 ]

发新话题 回复该主题

数据访问函数库的使用方法(一)——添加修改数据 [复制链接]

楼主
由于这个类库是需要实例化的,如果每一次都要实例化,然后用完了在销毁,无形中就多了不少的代码,而且很容易忘记销毁实例。 同时在用户的一次访问的过程中不断地实例化、销毁,也是比较浪费资源的。 所以我建立了一个基类,在基类里面同意获得实例、统一销毁实例,这样在编码的时候就不用考虑有没有实例化,也不用担心是否销毁实例了, 另外用起来(使用方式)也和静态类的使用方式很像了。 基类里的代码: (ps:我习惯在.aspx.cs里面直接调用 数据访问函数库,所以这个基类是继承System.Web.UI.Page 的,注意并不是说只能在.aspx.cs里面调用数据访问函数库namespace jyk.Common {     /**//// <summary>     /// 页面的基类。     /// </summary> public class BasePageLogon :System.Web.UI.Page     {         public DataAccessLayer dal = new DataAccessLayer();    //定义数据访问层的实例                       初始化 在Page_Load之间执行#region 初始化 在Page_Load之间执行         protected override void OnInit(EventArgs e)         {             base.OnInit (e);                                  //清除缓存             Response.Cache.SetNoStore();         }         #endregion         销毁数据访问层的实例  OnUnload#region 销毁数据访问层的实例  OnUnload         override protected void OnUnload(EventArgs e)         {             if (dal != null)                 dal.Dispose();             base.OnUnload (e);         }         #endregion     } } 在新的页面里只要继承了这个基类,就可以直接使用实例了。 1、使用SQL语句添加数据的方法 private void Btn_Save_Click(object sender, System.EventArgs e)         {             //添加数据的演示代码             //定义字段名称 string[] str1 = new string[2];             str1[0] = "Title";             str1[1] = "Content";             //获取用户输入的数据 string[] str = new string[2];             str[0] = this.Txt_Title.Text.Trim().Replace("'","");             str[1] = this.Txt_Content.Text.Trim().Replace("'","");             进行各种验证#region 进行各种验证             if (str[0].Length == 0)             {                 Functions.PageRegisterAlert(Page,"请填写新闻标题");                 return;             }             if (dal.RunSqlExists("select top 1 1 from Demo_News where Title='" + str[0] + "'"))             {                 Functions.PageRegisterAlert(Page,"已经有这个新闻标题了,不能再次添加!");                 return;             }             #endregion             //通过验证后添加数据,不同自己组合 insert into 语句,会在函数内部自动组合。             //暂时不支持参数化sql语句             dal.InsertDataStr("Demo_News",str1,str);             //string NewDataID = dal.InsertDataStr("Demo_News",str1,str); /**////InsertDataStr 可以返回新增加的记录的主键ID值。             ///当然有一个前提条件:主键是int自增的,而且不能是复合主键。             检查是否出现异常#region 检查是否出现异常             string err = dal.ErrorMsg ;             if (err.Length > 2)             {                 Functions.PageRegisterAlert(Page,"添加数据时出现异常,请与管理员联系");                 return;             }             #endregion                  Functions.PageRegisterAlert(Page,"添加成功!");                          /**////不足的地方的说明:             ///1、暴露的字段名和表名。             /// 您可能会说,万一表名或者字段名改了的话,那还得满世界去找该修改哪些地方,             /// 万一漏掉了一个,编译的时候也不会被发现,只有在运行且添加了一条数据的时候才会发现,             /// 这样就会很麻烦。             ///             /// 这个确实是一个问题,那么面对这个问题我们是什么态度呢?否定这种方式、进行改进、还是其他?             /// 可能您会因为这个缺点直接否定这种添加剂的方式,             /// 而我选择了在此基础上进行改进,于是出现了“表单控件”。             ///         } 2、使用SQL语句修改数据的方法 private void Btn_Save_Mod_Click(object sender, System.EventArgs e)         {             //修改数据的演示代码             //定义字段名称 string[] str1 = new string[2];             str1[0] = "Title";             str1[1] = "Content";             //获取用户输入的数据 string[] str = new string[2];             str[0] = this.Txt_Title_Mod.Text.Trim().Replace("'","");             str[1] = this.Txt_Content_Mod.Text.Trim().Replace("'","");             string NewsID = "";            //根据你的情况来获取主键值                          进行各种验证#region 进行各种验证             if (str[0].Length == 0)             {                 Functions.PageRegisterAlert(Page,"请填写新闻标题");                 return;             }             if (dal.RunSqlExists("select top 1 1 from Demo_News where Title='" + str[0] + "' and NewsID <>" + NewsID))             {                 Functions.PageRegisterAlert(Page,"已经有这个新闻标题了,不能再次添加!");                 return;             }             #endregion             //通过验证后修改数据                          //最后一个参数是条件,就是要修改哪条数据,这个参数会加在 where 的后面。             //所以也可以写成 kind = 1 ,这样的话,所有  kind = 1 的记录就都被修改了             dal.UpdateData("Demo_News",str1,str," NewsID=" + NewsID);                                           检查是否出现异常#region 检查是否出现异常             string err = dal.ErrorMsg ;             if (err.Length > 2)             {                 Functions.PageRegisterAlert(Page,"修改数据时出现异常,请与管理员联系");                 return;             }             #endregion                  Functions.PageRegisterAlert(Page,"修改成功!");                          /**//// 其实修改的代码和添加的代码基本相同,所以可以合在一起写。             /// 我在写的时候也都是放在一起的。             ///                      } 3、使用SQL语句添加和修改数据放在一起的方法 private void Btn_Save_Mod2_Click(object sender, System.EventArgs e)         {             //添加和修改数据放在一起的演示代码             //定义字段名称 string[] str1 = new string[2];             str1[0] = "Title";             str1[1] = "Content";             //获取用户输入的数据 string[] str = new string[2];             str[0] = this.Txt_Title.Text.Trim().Replace("'","");             str[1] = this.Txt_Content.Text.Trim().Replace("'","");             进行各种验证#region 进行各种验证             if (str[0].Length == 0)             {                 Functions.PageRegisterAlert(Page,"请填写新闻标题");                 return;             }             #endregion             if ("添加数据" == "添加数据")        //根据你的情况来判断是否是添加数据 {                 dal.InsertDataStr("Demo_News",str1,str);             }             else             {                 //通过验证后修改数据 string NewsID = "";            //根据你的情况来获取主键值                 dal.UpdateData("Demo_News",str1,str," NewsID=" + NewsID);                 }                          检查是否出现异常#region 检查是否出现异常             string err = dal.ErrorMsg ;             if (err.Length > 2)             {                 Functions.PageRegisterAlert(Page,"保存数据时出现异常,请与管理员联系");                 return;             }             #endregion                  Functions.PageRegisterAlert(Page,"保存成功!");                                           } 4、使用存储过程实现添加和修改数据数据的方法 private void Btn_Save_Mod3_Click(object sender, System.EventArgs e)         {             //使用存储过程实现添加和修改数据             //清除存储过程的参数,以便重新添加参数             dal.ClearParameter();             //获取用户输入的数据 string[] str = new string[2];             str[0] = this.Txt_Title.Text.Trim().Replace("'","");             str[1] = this.Txt_Content.Text.Trim().Replace("'","");             //定义存储过程的参数,同时赋值             dal.addNewParameter("@Title",str[0],100);        //nvarchar的需要设置大小             dal.addNewParameter("@Content",str[1]);            //ntext 的不用设置大小                          dal.addNewParameter("@test_double",double.Parse("2.2"));    //double类型的参数             dal.addNewParameter("@test_bit",true);                        //bit类型的参数             dal.addNewParameter("@test_decimal",decimal.Parse("1.1"));    //decimal 类型的参数             //设置返回型的参数 output             dal.addNewParameter("@re_Msg",HBS.ParameterKind.NVarChar );    //             dal.addNewParameter("@re_NewDataID",HBS.ParameterKind.Int  );        //可以用来返回新记录的ID                          进行各种验证#region 进行各种验证             if (str[0].Length == 0)             {                 Functions.PageRegisterAlert(Page,"请填写新闻标题");                 return;             }             #endregion             if ("添加数据" == "添加数据")        //根据你的情况来判断是否是添加数据 {             }             else             {                 //通过验证后修改数据                 //修改数据的时候需要设置主键ID int NewsID = "1";            //根据你的情况来获取主键值                 dal.addNewParameter("Content",NewsID);            //int 的参数             }                          dal.RunStore("Proc_Demo_News_Mod");        //传入存储过程的名称                          检查是否出现异常#region 检查是否出现异常             string err = dal.ErrorMsg ;             if (err.Length > 2)             {                 Functions.PageRegisterAlert(Page,"保存数据时出现异常,请与管理员联系");                 return;             }             #endregion                  Functions.PageRegisterAlert(Page,"保存成功!");                                           }
附件:您需要登录才可以下载或查看附件。没有帐号? 注册
分享 转发
从此我不再仰脸看青天,不再低头看白水,只谨慎着我双双的脚步,我要一不一不踏在泥土上,打上深深的脚印!
TOP
沙发

回复:数据访问函数库的使用方法(一)——添加修改数据

学习了 谢谢!!
TOP
板凳

学习了。路过路过。
TOP
地板

学习了
TOP
五楼

版面有点杂,不太好看懂。
TOP
六楼

不错的 学习了
TOP
七楼

学习学习。
TOP
八楼

晕,没格式化看的比较累!
TOP
九楼

好好学习,天天向上。有适合新手的,请转发QQ:298371987
TOP
十楼

版面再排下版就好了!学习!
TOP
发新话题 回复该主题