数据访问函数库的使用方法(一)——添加修改数据
2008-04-27 20:34 金色海洋(jyk) 阅读(1385) 评论(4) 收藏 举报由于这个类库是需要实例化的,如果每一次都要实例化,然后用完了在销毁,无形中就多了不少的代码,而且很容易忘记销毁实例。
同时在用户的一次访问的过程中不断地实例化、销毁,也是比较浪费资源的。
所以我建立了一个基类,在基类里面同意获得实例、统一销毁实例,这样在编码的时候就不用考虑有没有实例化,也不用担心是否销毁实例了,
另外用起来(使用方式)也和静态类的使用方式很像了。
基类里的代码:
(ps:我习惯在.aspx.cs里面直接调用 数据访问函数库,所以这个基类是继承System.Web.UI.Page 的,注意并不是说只能在.aspx.cs里面调用数据访问函数库)
 namespace jyk.Common
namespace jyk.Common {
{ /// <summary>
    /// <summary> /// 页面的基类。
    /// 页面的基类。 /// </summary>
    /// </summary> public class BasePageLogon :System.Web.UI.Page
    public class BasePageLogon :System.Web.UI.Page {
    { public DataAccessLayer dal = new DataAccessLayer();    //定义数据访问层的实例
        public DataAccessLayer dal = new DataAccessLayer();    //定义数据访问层的实例 
     
         初始化 在Page_Load之间执行
        初始化 在Page_Load之间执行
 销毁数据访问层的实例  OnUnload
        销毁数据访问层的实例  OnUnload
 }
    } }
}在新的页面里只要继承了这个基类,就可以直接使用实例了。
1、使用SQL语句添加数据的方法
 private void Btn_Save_Click(object sender, System.EventArgs e)
private void Btn_Save_Click(object sender, System.EventArgs e) {
        { //添加数据的演示代码
            //添加数据的演示代码
 //定义字段名称
            //定义字段名称 string[] str1 = new string[2];
            string[] str1 = new string[2]; str1[0] = "Title";
            str1[0] = "Title"; str1[1] = "Content";
            str1[1] = "Content";
 //获取用户输入的数据
            //获取用户输入的数据 string[] str = new string[2];
            string[] str = new string[2]; str[0] = this.Txt_Title.Text.Trim().Replace("'","");
            str[0] = this.Txt_Title.Text.Trim().Replace("'",""); str[1] = this.Txt_Content.Text.Trim().Replace("'","");
            str[1] = this.Txt_Content.Text.Trim().Replace("'","");
 进行各种验证
            进行各种验证
 //通过验证后添加数据,不同自己组合 insert into 语句,会在函数内部自动组合。
            //通过验证后添加数据,不同自己组合 insert into 语句,会在函数内部自动组合。 //暂时不支持参数化sql语句
            //暂时不支持参数化sql语句 dal.InsertDataStr("Demo_News",str1,str);
            dal.InsertDataStr("Demo_News",str1,str); //string NewDataID = dal.InsertDataStr("Demo_News",str1,str);
            //string NewDataID = dal.InsertDataStr("Demo_News",str1,str); ///InsertDataStr 可以返回新增加的记录的主键ID值。
            ///InsertDataStr 可以返回新增加的记录的主键ID值。 ///当然有一个前提条件:主键是int自增的,而且不能是复合主键。
            ///当然有一个前提条件:主键是int自增的,而且不能是复合主键。
 检查是否出现异常
            检查是否出现异常 
     Functions.PageRegisterAlert(Page,"添加成功!");
            Functions.PageRegisterAlert(Page,"添加成功!"); 
            
 ///不足的地方的说明:
            ///不足的地方的说明: ///1、暴露的字段名和表名。
            ///1、暴露的字段名和表名。 /// 您可能会说,万一表名或者字段名改了的话,那还得满世界去找该修改哪些地方,
            /// 您可能会说,万一表名或者字段名改了的话,那还得满世界去找该修改哪些地方, /// 万一漏掉了一个,编译的时候也不会被发现,只有在运行且添加了一条数据的时候才会发现,
            /// 万一漏掉了一个,编译的时候也不会被发现,只有在运行且添加了一条数据的时候才会发现, /// 这样就会很麻烦。
            /// 这样就会很麻烦。 ///
            ///  /// 这个确实是一个问题,那么面对这个问题我们是什么态度呢?否定这种方式、进行改进、还是其他?
            /// 这个确实是一个问题,那么面对这个问题我们是什么态度呢?否定这种方式、进行改进、还是其他? /// 可能您会因为这个缺点直接否定这种添加剂的方式,
            /// 可能您会因为这个缺点直接否定这种添加剂的方式, /// 而我选择了在此基础上进行改进,于是出现了“表单控件”。
            /// 而我选择了在此基础上进行改进,于是出现了“表单控件”。  ///
            /// 
 }
        }2、使用SQL语句修改数据的方法
 private void Btn_Save_Mod_Click(object sender, System.EventArgs e)
private void Btn_Save_Mod_Click(object sender, System.EventArgs e) {
        { //修改数据的演示代码
            //修改数据的演示代码 //定义字段名称
            //定义字段名称 string[] str1 = new string[2];
            string[] str1 = new string[2]; str1[0] = "Title";
            str1[0] = "Title"; str1[1] = "Content";
            str1[1] = "Content";
 //获取用户输入的数据
            //获取用户输入的数据 string[] str = new string[2];
            string[] str = new string[2]; str[0] = this.Txt_Title_Mod.Text.Trim().Replace("'","");
            str[0] = this.Txt_Title_Mod.Text.Trim().Replace("'",""); str[1] = this.Txt_Content_Mod.Text.Trim().Replace("'","");
            str[1] = this.Txt_Content_Mod.Text.Trim().Replace("'","");
 string NewsID = "";            //根据你的情况来获取主键值
            string NewsID = "";            //根据你的情况来获取主键值 
             进行各种验证
            进行各种验证
 //通过验证后修改数据
            //通过验证后修改数据 
             //最后一个参数是条件,就是要修改哪条数据,这个参数会加在 where 的后面。
            //最后一个参数是条件,就是要修改哪条数据,这个参数会加在 where 的后面。 //所以也可以写成 kind = 1 ,这样的话,所有  kind = 1 的记录就都被修改了
            //所以也可以写成 kind = 1 ,这样的话,所有  kind = 1 的记录就都被修改了 dal.UpdateData("Demo_News",str1,str," NewsID=" + NewsID);
            dal.UpdateData("Demo_News",str1,str," NewsID=" + NewsID);     
             
             检查是否出现异常
            检查是否出现异常 
     Functions.PageRegisterAlert(Page,"修改成功!");
            Functions.PageRegisterAlert(Page,"修改成功!"); 
            
 /// 其实修改的代码和添加的代码基本相同,所以可以合在一起写。
            /// 其实修改的代码和添加的代码基本相同,所以可以合在一起写。 /// 我在写的时候也都是放在一起的。
            /// 我在写的时候也都是放在一起的。 ///
            /// 
             }
        }3、使用SQL语句添加和修改数据放在一起的方法
 private void Btn_Save_Mod2_Click(object sender, System.EventArgs e)
private void Btn_Save_Mod2_Click(object sender, System.EventArgs e) {
        { //添加和修改数据放在一起的演示代码
            //添加和修改数据放在一起的演示代码 //定义字段名称
            //定义字段名称 string[] str1 = new string[2];
            string[] str1 = new string[2]; str1[0] = "Title";
            str1[0] = "Title"; str1[1] = "Content";
            str1[1] = "Content";
 //获取用户输入的数据
            //获取用户输入的数据 string[] str = new string[2];
            string[] str = new string[2]; str[0] = this.Txt_Title.Text.Trim().Replace("'","");
            str[0] = this.Txt_Title.Text.Trim().Replace("'",""); str[1] = this.Txt_Content.Text.Trim().Replace("'","");
            str[1] = this.Txt_Content.Text.Trim().Replace("'","");
 进行各种验证
            进行各种验证
 if ("添加数据" == "添加数据")        //根据你的情况来判断是否是添加数据
            if ("添加数据" == "添加数据")        //根据你的情况来判断是否是添加数据 {
            { dal.InsertDataStr("Demo_News",str1,str);
                dal.InsertDataStr("Demo_News",str1,str); }
            } else
            else {
            { //通过验证后修改数据
                //通过验证后修改数据 string NewsID = "";            //根据你的情况来获取主键值
                string NewsID = "";            //根据你的情况来获取主键值 dal.UpdateData("Demo_News",str1,str," NewsID=" + NewsID);
                dal.UpdateData("Demo_News",str1,str," NewsID=" + NewsID);     }
            } 
             检查是否出现异常
            检查是否出现异常 
     Functions.PageRegisterAlert(Page,"保存成功!");
            Functions.PageRegisterAlert(Page,"保存成功!"); 
                     
             }
        }4、使用存储过程实现添加和修改数据数据的方法
 private void Btn_Save_Mod3_Click(object sender, System.EventArgs e)
private void Btn_Save_Mod3_Click(object sender, System.EventArgs e) {
        { //使用存储过程实现添加和修改数据
            //使用存储过程实现添加和修改数据
 //清除存储过程的参数,以便重新添加参数
            //清除存储过程的参数,以便重新添加参数 dal.ClearParameter();
            dal.ClearParameter();
 //获取用户输入的数据
            //获取用户输入的数据 string[] str = new string[2];
            string[] str = new string[2]; str[0] = this.Txt_Title.Text.Trim().Replace("'","");
            str[0] = this.Txt_Title.Text.Trim().Replace("'",""); str[1] = this.Txt_Content.Text.Trim().Replace("'","");
            str[1] = this.Txt_Content.Text.Trim().Replace("'","");
 //定义存储过程的参数,同时赋值
            //定义存储过程的参数,同时赋值 dal.addNewParameter("@Title",str[0],100);        //nvarchar的需要设置大小
            dal.addNewParameter("@Title",str[0],100);        //nvarchar的需要设置大小 dal.addNewParameter("@Content",str[1]);            //ntext 的不用设置大小
            dal.addNewParameter("@Content",str[1]);            //ntext 的不用设置大小 
             dal.addNewParameter("@test_double",double.Parse("2.2"));    //double类型的参数
            dal.addNewParameter("@test_double",double.Parse("2.2"));    //double类型的参数 dal.addNewParameter("@test_bit",true);                        //bit类型的参数
            dal.addNewParameter("@test_bit",true);                        //bit类型的参数 dal.addNewParameter("@test_decimal",decimal.Parse("1.1"));    //decimal 类型的参数
            dal.addNewParameter("@test_decimal",decimal.Parse("1.1"));    //decimal 类型的参数
 //设置返回型的参数 output
            //设置返回型的参数 output  dal.addNewParameter("@re_Msg",HBS.ParameterKind.NVarChar );    //
            dal.addNewParameter("@re_Msg",HBS.ParameterKind.NVarChar );    // dal.addNewParameter("@re_NewDataID",HBS.ParameterKind.Int  );        //可以用来返回新记录的ID
            dal.addNewParameter("@re_NewDataID",HBS.ParameterKind.Int  );        //可以用来返回新记录的ID
 
             进行各种验证
            进行各种验证
 if ("添加数据" == "添加数据")        //根据你的情况来判断是否是添加数据
            if ("添加数据" == "添加数据")        //根据你的情况来判断是否是添加数据 {
            { }
            } else
            else {
            { //通过验证后修改数据
                //通过验证后修改数据 //修改数据的时候需要设置主键ID
                //修改数据的时候需要设置主键ID int NewsID = "1";            //根据你的情况来获取主键值
                int NewsID = "1";            //根据你的情况来获取主键值 dal.addNewParameter("Content",NewsID);            //int 的参数
                dal.addNewParameter("Content",NewsID);            //int 的参数 }
            } 
             dal.RunStore("Proc_Demo_News_Mod");        //传入存储过程的名称
            dal.RunStore("Proc_Demo_News_Mod");        //传入存储过程的名称 
             检查是否出现异常
            检查是否出现异常 
     Functions.PageRegisterAlert(Page,"保存成功!");
            Functions.PageRegisterAlert(Page,"保存成功!"); 
                     
             }
        }还有其他的用法,今天先写这些
源代码下载和事例代码下载
http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html
直接查看源码
http://www.cnblogs.com/jyk/archive/2006/08/16/478021.html


 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号