利用DataAdapter对象填充与更新DataSet对象
一,填充DataSet对象
①根据连接字符串和SQL语句,创建一个SqlDataAdapter对象。
虽然没有出现Connection和Command对象的控制语句,但是SqlDataAdapter对象会在创建的时候,自动构造对应的SqlConnection和SqlCommand对象,同时根据连接字符串自动初始化连接。注意!此时SqlConnection和SqlCommand对象都处于关闭状态。
②创建DataSet对象,该对象需要用DataAdapter填充。
③调用DataAdapter的Fill方法,通过DataTable填充DataSet对象。
由于跟随DataAdapter对象创建的Command里的SQL语句是访问数据库里的客户信息表tb_Customer,所以在调用Fill方法的时候,在打开对应的SqlConnection和SqlCommand对象后,会用客户信息表tb_Customer的数据填充创建一个名DataTable对象,再用该DataTable填充到DataSet中。
案例代码如下:
public DataSet testDataSet()
{
//拼接SQL语句
StringBuilder strSQL = new StringBuilder();
strSQL.Append("select * from tb_Customer");
//生成连接数据库的类对象mshADONet,即connection对象
MshADONET mshADONet = new MshADONET();
//利用构造函数,创建DataAdapter
SqlDataAdapter da = new SqlDataAdapter(strSQL.ToString(), mshADONet.StrConnect);
// 创建DataSet
DataSet ds = new DataSet();
//填充,第一个参数是要填充的dataset对象,第二个参数是填充dataset的datatabble
da.Fill(ds, "Customer");
return ds;
}
//点击按钮,显示数据于dataGridView1控件
private void button1_Click(object sender, EventArgs e)
{
MshBusinessLogic mshBuss= new MshBusinessLogic();
this.dataGridView1.DataSource = mshBuss.testDataSet();
this.dataGridView1.DataMember = "Customer";
}
二,将DataSet中的数据更新到数据库
public void updateDataSet()
{
//拼接SQL语句
StringBuilder strSQL = new StringBuilder();
strSQL.Append("select * from tb_Customer");
//生成数据库操作对象
MshADONET mshADONet = new MshADONET();
//利用构造函数,创建DataAdapter
SqlDataAdapter da = new SqlDataAdapter(strSQL.ToString(), mshADONet.StrConnect);
// 创建DataSet
DataSet ds = new DataSet();
//填充,第一个参数是要填充的dataset对象,第二个参数是填充dataset的datatabble
da.Fill(ds, "Customer");
//以下代码将更新DataSet里的数据
//在DataSet里的名为"Customer"的DataTable里添加一个用于描述行记录的DataRow对象
DataRow dr = ds.Tables["Customer"].NewRow();
//通过DataRow对象添加一条记录
dr["Name"] = "tom";
dr["Phone"] = "13967310417";
dr["Email"] = "2156858566@qq.com";
ds.Tables["Customer"].Rows.Add(dr);
//更新到数据库里
SqlCommandBuilder scb = new SqlCommandBuilder(da);
da.UpdateCommand = scb.GetUpdateCommand();
da.Update(ds, "Customer");
}
//测试按钮代码
private void button2_Click(object sender, EventArgs e)
{
MshBusinessLogic mshBuss = new MshBusinessLogic();
mshBuss.updateDataSet();
}