zoukankan      html  css  js  c++  java
  • 数据访问函数库的使用方法(一)——添加修改数据


    由于这个类库是需要实例化的,如果每一次都要实例化,然后用完了在销毁,无形中就多了不少的代码,而且很容易忘记销毁实例。
    同时在用户的一次访问的过程中不断地实例化、销毁,也是比较浪费资源的。

    所以我建立了一个基类,在基类里面同意获得实例、统一销毁实例,这样在编码的时候就不用考虑有没有实例化,也不用担心是否销毁实例了,
    另外用起来(使用方式)也和静态类的使用方式很像了。

    基类里的代码:

    (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之间执行

            
    销毁数据访问层的实例  OnUnload

        }

    }


    在新的页面里只要继承了这个基类,就可以直接使用实例了。


    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("'","");

                
    进行各种验证

                
    //通过验证后添加数据,不同自己组合 insert into 语句,会在函数内部自动组合。
                
    //暂时不支持参数化sql语句
                dal.InsertDataStr("Demo_News",str1,str);
                
    //string NewDataID = dal.InsertDataStr("Demo_News",str1,str);
                ///InsertDataStr 可以返回新增加的记录的主键ID值。
                
    ///当然有一个前提条件:主键是int自增的,而且不能是复合主键。


                
    检查是否出现异常
        
                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 = "";            //根据你的情况来获取主键值
                
                
    进行各种验证

                
    //通过验证后修改数据
                
                
    //最后一个参数是条件,就是要修改哪条数据,这个参数会加在 where 的后面。
                
    //所以也可以写成 kind = 1 ,这样的话,所有  kind = 1 的记录就都被修改了
                dal.UpdateData("Demo_News",str1,str," NewsID=" + NewsID);    
                
                
                
    检查是否出现异常
        
                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("'","");

                
    进行各种验证

                
    if ("添加数据" == "添加数据")        //根据你的情况来判断是否是添加数据
                {
                    dal.InsertDataStr(
    "Demo_News",str1,str);
                }

                
    else
                
    {
                    
    //通过验证后修改数据
                    string NewsID = "";            //根据你的情况来获取主键值
                    dal.UpdateData("Demo_News",str1,str," NewsID=" + NewsID);    
                }

                
                
    检查是否出现异常
        
                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

                
                
    进行各种验证

                
    if ("添加数据" == "添加数据")        //根据你的情况来判断是否是添加数据
                {
                }

                
    else
                
    {
                    
    //通过验证后修改数据
                    
    //修改数据的时候需要设置主键ID
                    int NewsID = "1";            //根据你的情况来获取主键值
                    dal.addNewParameter("Content",NewsID);            //int 的参数
                }

                
                dal.RunStore(
    "Proc_Demo_News_Mod");        //传入存储过程的名称
                
                
    检查是否出现异常
        
                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



  • 相关阅读:
    TCP/IP学习笔记(3)-IP、ARP、RARP协议
    TCP/IP学习笔记(2)-数据链路层
    tcp/ip学习笔记(1)-基本概念
    实体bean里面不要轻易加transient,反序列回来之后会变成null
    [Maven实战-许晓斌]-[第三章] Mave使用入门二(在IDE中的使用) [第四章] 案例的背景介绍
    [Maven实战-许晓斌]-[第三章] Mave使用入门
    [Maven实战-许晓斌]-[第二章]-2.7-2.8 Mave安装的最优建议和安装小结
    [Maven实战-许晓斌]-[第二章]-2.6 NetBeans上面安装Maven插件
    ifdown
    ifup
  • 原文地址:https://www.cnblogs.com/jyk/p/1173491.html
Copyright © 2011-2022 走看看