第四讲:DataAdapter深入
a) 如果想对DataTable表中的数据进行update,insert,delete操作就要用到Update方法,Update 方法自动遍历DataTable中的所有行,
3
3 数据源,DataSet,DataAdapter三者之间的关系
DataAdapter作为桥梁连接数据源和DataSet
DataSet,在这里进行update,delete,insert |
DataAdapter |
DataBase |
Update()方法在这刷新 |
Fill方法 |
4一个常用类
SqlCommandBuilder类:自动生成单表命令,在更新单一表简单情况下,我不需要知道如何编写sql语句以完成更新:意思是,在不SqlCommandBuilder对象后可以在一个表中不需要编写任何SQL语句就可以完成更新,是一个表
1. DataTable Rows集合的三个常用方法
Find方法:检索行
Add方法:创建行
Delete方法:删除行
Web.Config
<connectionStrings>
<add name="connectionString" connectionString="Data Source=.; Initial Catalog=test; user id=sa; password=meng1986"/>
</connectionStrings>
Default.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.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String strConfiguration= System.Configuration.ConfigurationManager.ConnectionStrings ["connectionString"].ToString();
SqlConnection sqlCon = new SqlConnection(strConfiguration);
//填充DataSet
SqlDataAdapter sqlAdapter = new SqlDataAdapter("select * from info",sqlCon );
//执行SqlCommandBuilder后就已经执行了,并生成SQL语句
//以下的语句好象没有用到sqlComBuilder 对象,其实当Rows[0].Add,Rows[0].Delete方法时会自动编译成insert语句,和Delete语句
SqlCommandBuilder sqlComBuilder = new SqlCommandBuilder(sqlAdapter);//生成sql命令并与SqlDataAdaper产生连接
DataSet dataSet = new DataSet();
sqlAdapter.Fill(dataSet, "info");//使用DataSet将数据进行填充
//添加数据
DataRow dr = dataSet.Tables["info"].NewRow();//使用DataTable对象的NewRow方法创建新行
dr["name"] = "张三";
dr["sex"] = "男";
//这里的add方法在哪来呢,来自于sqlCommandBuilder sqlCommandBuilder已经进行了编译
//add语句已经根据select语句编写insert语句,这是它的微妙之处,局限在于只能对单表进行操作
dataSet.Tables["info"].Rows.Add(dr);// Rows集全的Add方法添加行
//修改数据
Response.Write("修改之前的数据为:" + dataSet.Tables["info"].Rows[0]["name"] + "" + dataSet.Tables["info"].Rows[0]["sex"] + "<br>");
dataSet.Tables["info"].Rows[0]["name"] = "李四";
dataSet.Tables["info"].Rows[0]["sex"] = "女";
Response.Write("修改后的数据为:" + dataSet.Tables["info"].Rows[0]["name"] + "" + dataSet.Tables["info"].Rows[0]["sex"] + "<br>");
//删除数据
//这里的add方法在哪来呢,来自于sqlCommandBuilder sqlCommandBuilder已经进行了编译
//这里的Delete语句已经根据select语句进行了编写delete语句 局限在于只能对单表进行操作
dataSet.Tables["info"].Rows[0].Delete();
sqlAdapter.Update(dataSet, "info");
sqlCon.Close();
Response.Write("数据已删除");
}
}