黑马程序员之ADO.NET学习笔记:通过数据集操作数据
来源:互联网 发布:量子通信京沪干线 知乎 编辑:程序博客网 时间:2024/06/05 18:42
--------------------------------------------------- 2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------
数据集是最常用的访问数据的方式,其主要流程是连接数据库、进行数据查询、将查询结果填充到数据集、对数据集中的数据进行展示和操作、将操作后的数据集提交数据库,通过这一系列操作实现对数据库的修改,此过程主要通过DataSet、DataAdapter、DataTable、DataRow、DataColumn、SqlCommandBuilder等类实现。
根据上面所说到过程,逐步分析:
1、数据查询,这里的数据查询不再是通过Command对象实现,而是通过DataAdapter类的实例来实现,具体代码如下:
SqlDataAdapter sqldadp = new SqlDataAdapter("SELECT name, company, position, shijian FROM[UserDate].[dbo].[b1] WHERE shijian > '2010-01-21'", con)
上面的代码里面的con是SqlConnection对象的实例,即数据库链接
2、将数据填充到数据集,数据集也就是DataSet对象的实例了,代码如下:
DataSet order_daset = new DataSet();//创建DataSet对象实例
sqldadp.Fill(order_daset);//填充DataSet对象
注意填充语句中的参数以及方法,是用SqlDataAdapter对象的实例来填充DataSet对象的实例
3、对数据集中的数据进行展示和操作,这步也是这项技术中最重要、最麻烦的一步,主要是通过DataTable对象的实例对数据进行展示和修改,而DataTable类具有很多的属性和方法,常用的属性有:Columns能够得到数据集中的字段的数据类型、大小、字段名等信息,DataSet能够获得当前DataTable实例所属的数据集,Rows可以通过下标及字段名(类似于二维数组)的方式获得指定行列的数据,常用的方法有:NewRow()方法能够创建一个空白行,可以在添加数据的时候使用,AcceptChanges()方法能够将数据表中修改提交给数据库,Clear()方法可以清楚DataTable对象中的所有数据。具体代码如下:
DataTable dt = newDataTable();//创建数据表对象
dt =order_daset.Tables[0];//填充数据表
Response.Write("<table border='1'><tr><th>姓名</th><th>公司</th><th>职位</th><th>入职时间</th></tr>");
for (int i = 0; i< dt.Rows.Count; i++)
{
//按照字段,逐行取出数据表中的内容并显示在页面上
Response.Write("<tr>");
Response.Write("<td>"+dt.Rows[i]["name"].ToString()+"</td>");
Response.Write("<td>"+dt.Rows[i]["company"].ToString()+"</td>");
Response.Write("<td>"+dt.Rows[i]["position"].ToString()+"</td>"); Response.Write("<td>"+DateTime.Parse(dt.Rows[i]["shijian"].ToString()).ToString("yyyy-MM-dd")+ "</td>");
Response.Write("</tr>");
}
Response.Write("</table>");
注:上面的代码主要是数据集的展示功能,需要注意的是填充数据表的语句,是由DataSet对象的Tables属性的下标为0的数据表填充的,这点是非常重要的。
下面来看看对数据集的修改并且提交数据库,对数据集的修改,可以通过DataRow以及SqlCommandBuilder对象的实例来实现,SqlCommandBuilder的作用是根据DataAdapter对象自动生成INSERT、UPDATE、DELETE语句,从而使DataAdapter对象更新数据库内容。具体代码如下:
//创建DataAdapter对象实例
SqlDataAdapter sqldadp = new SqlDataAdapter("SELECT name, company, position, shijian FROM [UserDate].[dbo].[b1]", con);
SqlCommandBuilder scb = new SqlCommandBuilder(sqldadp);//生成插入、删除、更新语句
DataSet ds = newDataSet();//创建DataSet对象
sqldadp.Fill(ds);//填充DataSet
DataRow Myrow =ds.Tables[0].NewRow();//在数据表中创建新的空白记录对象
//从前台页面接受要插入的数据
Myrow["name"]= Name.Text;
Myrow["company"]= Company.Text;
Myrow["position"]= Position.Text;
Myrow["shijian"]= Datetime.Text;
//将接收到的数据添加到DataTable中
ds.Tables[0].Rows.Add(Myrow);
//更新数据库中的内容
sqldadp.Update(ds);
Response.Write("添加成功!<br>");
注:上面的代码中最关键的一个方法是SqlDataAdapter对象的Update()方法,这个方法的作用是将对数据集所作的改变提交给数据库,这部分代码与上面的展示代码所不同的是DataRow对象的实例所接收的是DataTable中的一行,而不是整个DataTable,其代码为:DataRow Myrow =ds.Tables[0].NewRow(),这句话就是说在原有的DataTable的基础上创建一个新的空行,而下面的代码则是为这个空行赋值并提交更新,同样的,如果是更新数据的话,也是获得DataTable的某一行后,然后对其中的数据进行赋值修改,然后提交,如果是删除操作,则是通过DataTable获取某行后,用DataRow接受,然后再调用DataTable的Rows属性的Remove方法删除,具体如下代码:
DataTabledt = ds.Tables[0];
dt.Rows.Remove(Myrow);
--------------------------------------------------- 2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------
- 黑马程序员之ADO.NET学习笔记:通过数据集操作数据
- 黑马程序员之ADO.NET学习笔记: SqlDataAdapter(数据适配器)
- 黑马程序员之ADO.NET学习笔记:ADO.NET数据导入导出
- 黑马程序员之ADO.NET学习笔记:执行Insert操作
- 黑马程序员之ADO.NET学习笔记:省市选择程序,数据全部来自于数据库。
- 黑马程序员之ADO.NET学习笔记:网络数据的事务处理
- 黑马程序员之ADO.NET学习笔记:ADO.NET介绍
- 黑马程序员之ADO.NET学习笔记:通过SqlCommand对象执行SQL语句
- 黑马程序员—学习笔记之ADO.Net
- 黑马程序员--学习笔记之ADO.Net基础知识
- 黑马程序员之ADO.NET学习笔记:登陆练习。
- 黑马程序员之ADO.NET学习笔记:SqlConnection(连接对象)
- 黑马程序员之ADO.NET学习笔记:SqlCommand(命令对象)
- 黑马程序员之ADO.NET学习笔记:SqlParameter(Sql参数)
- 黑马程序员之ADO.NET学习笔记:SqlDataReader(数据流读取器)
- 黑马程序员之ADO.NET学习笔记: SqlTransaction(事务)
- 黑马程序员之ADO.NET学习笔记:执行select语句
- 黑马程序员之ADO.NET学习笔记:using和close
- dedecms5.7sp1mysql导入数据时提示 USING BTREE 相关错误解决办法 本文来源于php教程
- ORACLE 效率测试小工具 Runstats
- SDP 协议分析
- InfoPath 系列:了解INFOPATH XSN文件的格式(1)
- Windows域相关命令
- 黑马程序员之ADO.NET学习笔记:通过数据集操作数据
- [记录]struts2的json插件配置详解(附demo)
- InfoPath 系列:了解INFOPATH XSN文件的格式(2)
- 使用 Struts2 JSON plugin ( Struts2 + jQuery )
- 计算字符串相似度算法——Levenshtein
- 对于非SYS用户索引建在SYS下面的删除与重建;
- 关于碧螺春的传说之一 【碧螺姑娘的故事】
- HDU 3938 Portal(离线+Kruskal+并查集)
- android中的invalidate()和postInvalidate()