数据访问函数库的使用方法(一)——添加修改数据
来源:互联网 发布:centos防火墙删除端口 编辑:程序博客网 时间:2024/05/19 21:04
由于这个类库是需要实例化的,如果每一次都要实例化,然后用完了在销毁,无形中就多了不少的代码,而且很容易忘记销毁实例。
同时在用户的一次访问的过程中不断地实例化、销毁,也是比较浪费资源的。
所以我建立了一个基类,在基类里面同意获得实例、统一销毁实例,这样在编码的时候就不用考虑有没有实例化,也不用担心是否销毁实例了,
另外用起来(使用方式)也和静态类的使用方式很像了。
基类里的代码:
(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
}
}
{
/// <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、暴露的字段名和表名。
/// 您可能会说,万一表名或者字段名改了的话,那还得满世界去找该修改哪些地方,
/// 万一漏掉了一个,编译的时候也不会被发现,只有在运行且添加了一条数据的时候才会发现,
/// 这样就会很麻烦。
///
/// 这个确实是一个问题,那么面对这个问题我们是什么态度呢?否定这种方式、进行改进、还是其他?
/// 可能您会因为这个缺点直接否定这种添加剂的方式,
/// 而我选择了在此基础上进行改进,于是出现了“表单控件”。
///
}
{
//添加数据的演示代码
//定义字段名称
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,"修改成功!");
/// 其实修改的代码和添加的代码基本相同,所以可以合在一起写。
/// 我在写的时候也都是放在一起的。
///
}
{
//修改数据的演示代码
//定义字段名称
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,"保存成功!");
}
{
//添加和修改数据放在一起的演示代码
//定义字段名称
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,"保存成功!");
}
{
//使用存储过程实现添加和修改数据
//清除存储过程的参数,以便重新添加参数
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
- 数据访问函数库的使用方法(一)——添加修改数据
- 数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法
- MVC5学习系列——从控制器访问模型的数据(添加、修改、删除)
- 数据访问层的使用方法
- 数据访问层的使用方法
- 向SqlParameter集合数组中添加参数——SQLHelp对数据访问层的优化(一)
- 分页解决方案 之 数据访问函数库——另类的思路、另类的写法,造就了不一样的发展道路。
- hibernate 一对一、多对一 双向关联的问题——只能在多的一方添加、修改数据,不能在多的一方修改添加
- json 数据的添加修改
- 数据访问函数库 for ado.net2.0
- 数据访问函数库 for ado.net2.0
- Android数据访问(一)——Asserts
- 修改数据访问代码
- 修改数据 -修改+添加+删除
- 我的数据访问类(第二版)—— for .net2.0 (一)
- 数据访问层的设计(一)——功能与接口定义
- 数据访问层的设计(一)——功能与接口定义
- 利用webgrid实现数据的批处理(添加和修改)
- heritrix的爬取定制
- 通用权限的思路。只是一个简单的思路。
- 我自己写的一个分页控件(源码和演示代码)PostBack分页版 for vs2003、SQL Server
- 数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法
- 算了一笔帐,供房子需要挣多少钱——在贷款的情况下,每个月最低工资。
- 数据访问函数库的使用方法(一)——添加修改数据
- “数据访问函数库”(DataAccessLibrary for .net2.0 )源代码下载 09.06.15更新
- 《死神》现队长、原队长和假面的对照
- 拿得起放得下,我的看法
- 页面回发后,让页面自动滚动到指定位置的一种简单的方法
- 回复整理 080307
- [自定义服务器控件] 第二步:下拉列表框。
- 宁做创业狼,不做打工狗
- [自定义服务器控件] 第三步:CheckBoxList。