数据访问函数库的使用方法(一)——添加修改数据-阿里云开发者社区

开发者社区> 金色海洋> 正文

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

简介: 由于这个类库是需要实例化的,如果每一次都要实例化,然后用完了在销毁,无形中就多了不少的代码,而且很容易忘记销毁实例。 同时在用户的一次访问的过程中不断地实例化、销毁,也是比较浪费资源的。 所以我建立了一个基类,在基类里面同意获得实例、统一销毁实例,这样在编码的时候就不用考虑有没有实例化,也不用担心是否销毁实例了, 另外用起来(使用方式)也和静态类的使用方式很像了。
+关注继续查看

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

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

基类里的代码:

(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,
"保存成功!");
                    
            
        }


还有其他的用法,今天先写这些


源代码下载和事例代码下载
http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html

直接查看源码
http://www.cnblogs.com/jyk/archive/2006/08/16/478021.html



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Qt .pro文件之defineReplace函数的用法,实现lib文件名自动添加后缀“d“
Qt .pro文件之defineReplace函数的用法,实现lib文件名自动添加后缀“d“
37 0
【BBED】使用bbed修改数字类型数据
bbed的使用(一)  介绍了BBED的编译安装。 bbed的使用(二)  介绍了bbed的语法规则和常用命令的使用。 bbed的使用(三)  介绍了bbed的命令。
802 0
Serverless 解惑——函数计算如何访问 Mongo 数据库
本文介绍如何快速实现函数计算访问 Mongo 数据库。
1027 0
mysql 关联表修改数据
UPDATE t1 INNER JOIN t2 ON t1.c1=t2.c1  SET t1.c2=value WHERE t1`removed`=0 AND t2`removed`=0 AND t1.c3='[]'
945 0
Excel中添加并使用宏实现批量更新数据
一、状况描述    当我们需要后台更新大量数据的时候,可以使用该功能。二、解決方案    (1)新建一个Excel文件,并另存为启用宏的Excel工作簿,扩展名为.xlsm。    (2)在Excel中添加按钮。
1123 0
1.1 - C#语言习惯 - 使用属性而不是可访问的数据成员
  属性一直是C#语言中的一等公民。自1.0版本以来,C#对属性进行了一系列的增强,让其表达能力不管提高。你甚至可以为setter和getter指定不同的访问权限。   隐式属性也极大降低了声明属性时的工作量,不会比声明数据成员麻烦多少。
861 0
使用ADO对象添加、修改、删除数据
使用ADO对象对数据库中的数据进行添加、修改和删除等操作。首先创建一个ADO类,通过ADO类连接数据库,并打开记录集。例如,使用ADO对象添加、修改、删除数据,程序设计步骤如下:(1)创建一个基于对话框的应用程序,将对话框的Caption属性修改“使用ADO对象添加、修改、删除数据”。
796 0
Java Data Access Object Pattern(数据访问对象模式)
数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来。以下是数据访问对象模式的参与者。
710 0
SpringBoot实战(四)之使用JDBC和Spring访问数据库
这里演示的是h2databse示例,所以简单的介绍普及下h2database相关知识 H2数据库是一个开源的关系型数据库。 H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。
2223 0
开发函数计算的正确姿势———为 PHP 运行时添加自定义扩展
PHP 语言提供了一种扩展机制(Extension),通过 PHP 扩展可以增强语法、调用 C/C++ 实现的库函数以及优化执行性能。PHP 扩展是与平台相关的动态链接库,在 Linux 和 Mac 平台是 .so 文件,在 Windows 平台是 .dll 文件。由于函数计算的开发通常在 Mac 和 Windows 平台,而运行时是 Linux(Debain)环境,所以为函数计算 PHP 运行时添加扩展会遇到由于动态链接库平台相关而导致要么本地无法调试,要么远端无法运行的问题。本文介绍借助 Funcraft 工具提供的模拟环境进行 PHP 扩展的安装、本地运行调试以及构建发布。
401 0
+关注
金色海洋
算法相关技术专家
323
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载