黑马程序员之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)

上面的代码里面的conSqlConnection对象的实例,即数据库链接

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接受,然后再调用DataTableRows属性的Remove方法删除,具体如下代码:

DataTabledt = ds.Tables[0];

dt.Rows.Remove(Myrow);


--------------------------------------------------- 2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------

原创粉丝点击