1、dotnet中实现数据表记录数据修改的代码功能.net中实现数据表记录数据修改的代码功能因为用直接拼接字符的方法给SQL语句传入字符存在极大的安全隐患,故以下代码采用给SQL语句传参数变量的方法,以下记录的是如何对数据库中的表记录数据进行修改的代码:其中将用到前面介绍的实体类生成器来创建数据表对象(category),而对象中的属性则对应表中的字段。修改的代码与插入的代码基本一样,主要是SQL语句不同,如果修改成功,会返回一个大于0的数值,否则修改失败,如果修改成功则RETURNTRUE否则FALSE,还是先看一下最终效果吧!然后再一步步的回顾操作步骤:1categoryDAO.cs类的源码:
2、(加黑的部分是实现修改功能的代码段)/*创建人:无声岁月* 创建时间:2009090323:20* 新闻类别表操作类* 版权所有:无声岁月*/using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;namespace DAL / / 新闻类别表操作类 / public class CategoryDAO private SQLHelper sqlhelper = null; public CategoryDAO() sqlhelpe
3、r = new SQLHelper(); /取出当前所有新闻类 public DataTable SelectAll() DataTable dt = new DataTable();/建立DataTable类的新实例 string sql = select * from category; dt = sqlhelper.ExecuteQuery(sql);/调用方法来执行传入的SQL语句并把结果集赋值给dt return dt; /增加类别 public bool Insert(string caName) bool flag = false; string sql = insert int
4、o category(name) values(caName); SqlParameter paras = new SqlParameter new SqlParameter(caName, caName) ; int res = sqlhelper.ExecuteNonQuery(sql, paras); if (res 0) flag = true; return flag; /修改类别 public bool Update(category ca) bool flag = false; string sql = update category set name=caName where
5、id=id; SqlParameter paras = new SqlParameter new SqlParameter(id,ca.Id), new SqlParameter(caName,ca.Name) ; int res = sqlhelper.ExecuteNonQuery(sql, paras); if (res 0) flag = true; return flag; /删除类别(连同其下的新闻及新闻评论一起删除) /判断类别名称是否存在 public bool IsExists(string caName) bool flag = false; string sql = se
6、lect * from category where name= + caName + ; DataTable rd = sqlhelper.ExecuteQuery(sql); if (rd.Rows.Count 0) flag = true; return flag; 2-界面:3)运行效果:下图是想把ID为4的“校园新闻”改为“经济新闻”当点击修改按钮后见到如下:下面一步一步来实现以上功能:方法一:1categoryDAO.cs中的一段修改源码:/修改类别 public bool Update(string id,string caName) bool flag = false; str
7、ing sql = update category set name=caName where id=id; SqlParameter paras = new SqlParameter new SqlParameter(id,id), new SqlParameter(caName,caName) ; int res = sqlhelper.ExecuteNonQuery(sql, paras); if (res 0) flag = true; return flag; 小小分析:(1) public bool Update(string id,string caName)从界面上传入来的ID
8、(如4)和caName(如经济新闻)(2)SqlParameter paras = new SqlParameter new SqlParameter(id,id), new SqlParameter(caName,caName) ;将id和caName赋值给参数变量id和caName(3) int res = sqlhelper.ExecuteNonQuery(sql, paras);将id和caName变量值赋给SQL语句,执行不返回结果集的SQL语句,这样res将得到一个整数,如果大于0则flag = true;否则flag = false,这个信号终反馈给Update()2布局一下界面
9、:双击以上“修改新闻类别”按钮,进行点击事件调用代码的编写(inserttest.aspx.cs中)using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using DAL;/* 倒入DAL项目*/public partial class _Default : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e
10、) GridView1.DataSource = new CategoryDAO().SelectAll();/调用方法,获取数据源 GridView1.DataBind();/将数据源绑定到GridView1控件 /* Response.Write(new SQLHelper().test(); 隐式创建类(SQLHelper)并对象调用方法:test()*/ protected void Button1_Click(object sender, EventArgs e) string caName = TextBox1.Text; string id = TextBox2.Text; bo
11、ol b = new CategoryDAO().Update(id,caName); Response.Write(b); GridView1.DataSource = new CategoryDAO().SelectAll();/调用方法,获取数据源 GridView1.DataBind();/将数据源绑定到GridView1控件 小小分析:(1) string caName = TextBox1.Text; string id = TextBox2.Text;将界面数据赋值给相应的变量(2) bool b = new CategoryDAO().Update(id,caName);将变量
12、数据作为参数传入Update()方法中(3)绑定数据源运行看看:想把第4条记录的“经济新闻”改成“广西新闻”单击“修改新闻”类别按钮以上方法的弊端是:我们的数据表中只有两个字段,但如果字段是几十个,就得在方法Update()中写入几十个的参数变量,是不是有点深长呢?正好以下将要介绍的方法二可以很好的解决这个弊端。方法二:创建一个对象,对象名就是表名,对象的属性就是表中的名个字段,这就用到前面介绍的“制作生成实体类”第一步:创建一个类库(即Model类库)(1)(2)创建category对象(用实体类生成器来创建)点击“生成实体类”按钮保存即可,然后在解决方案资源管理中刷新并点击显示所有项就可以
13、见到创建的category对象,请选择该对象,鼠标右键选择“包含到项目中”双击“category.cs”见到如下图:由上图知道,所谓的命名空间实际上就是一个类库,现在在类库Model中放了一个类(即category.cs),现在我们往类category.cs中加入一个构造函数,这样当我们为这个类创建实例时,系统就会自动对其进行初始化(把从界面输入的id和name数据赋值给这个类的属性id和name)category.cs源码如下:/*作者:无声胜有声* 创建时间:2009-9-28 18:31:02*/namespace Model public class category private
14、string id; public string Id get return id; set id = value; private string name; public string Name get return name; set name = value; public category(string id, string name) this.id = id; this.name = name; 把Model倒入到DAL层中(using Model;):添加引用一下:修改一下代码:修改代码至此已完成,接下来再修改一下调用代码:(值得注意的是凡有引用的地方都应添加Model的引用)之
15、外还得在insertest.aspx.cs中using Model;将每一层都重新生成一下:运行看看:修改数据表记录数据到此算暂时完成了。inserttest.aspx.cs源码:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web
16、.UI.HtmlControls;using DAL;/* 倒入DAL项目*/using Model;public partial class _Default : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) GridView1.DataSource = new CategoryDAO().SelectAll();/调用方法,获取数据源 GridView1.DataBind();/将数据源绑定到GridView1控件 /* Response.Write(new SQLHelper().test(
17、); 隐式创建类(SQLHelper)并对象调用方法:test()*/ protected void Button1_Click(object sender, EventArgs e) string caName = TextBox1.Text; string id = TextBox2.Text; category ca=new category( id,caName); bool b = new CategoryDAO().Update(ca); Response.Write(b); GridView1.DataSource = new CategoryDAO().SelectAll();
18、/调用方法,获取数据源 GridView1.DataBind();/将数据源绑定到GridView1控件 category.cs源码:/*作者:无声胜有声* 创建时间:2009-9-28 18:31:02*/namespace Model public class category private string id; public string Id get return id; set id = value; private string name; public string Name get return name; set name = value; public category(
19、string id, string name) this.id = id; this.name = name; categoryDAO.cs源码:/*创建人:无声岁月* 创建时间:2009090323:20* 新闻类别表操作类* 版权所有:无声岁月*/using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using Model;namespace DAL / / 新闻类别表操作类 / public class CategoryDA
20、O private SQLHelper sqlhelper = null; public CategoryDAO() sqlhelper = new SQLHelper(); /取出当前所有新闻类 public DataTable SelectAll() DataTable dt = new DataTable();/建立DataTable类的新实例 string sql = select * from category; dt = sqlhelper.ExecuteQuery(sql);/调用方法来执行传入的SQL语句并把结果集赋值给dt return dt; /增加类别 public bo
21、ol Insert(string caName) bool flag = false; string sql = insert into category(name) values(caName); SqlParameter paras = new SqlParameter new SqlParameter(caName, caName) ; int res = sqlhelper.ExecuteNonQuery(sql, paras); if (res 0) flag = true; return flag; /修改类别 public bool Update(category ca) boo
22、l flag = false; string sql = update category set name=caName where id=id; SqlParameter paras = new SqlParameter new SqlParameter(id,ca.Id), new SqlParameter(caName,ca.Name) ; int res = sqlhelper.ExecuteNonQuery(sql, paras); if (res 0) flag = true; return flag; /删除类别(连同其下的新闻及新闻评论一起删除) /判断类别名称是否存在 public bool IsExists(string caName) bool flag = false; string sql = select * from category where name= + caName + ; DataTable rd = sqlhelper.ExecuteQuery(sql); if (rd.Rows.Count 0) flag = true; return flag;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1