1. 程式人生 > >ASP.NET ADO.NET資料訪問技術(二 使用DataAdapter物件的 增刪查改 )

ASP.NET ADO.NET資料訪問技術(二 使用DataAdapter物件的 增刪查改 )

一、DataAdapter相關介紹

使用DataAdapter物件查詢資料庫相當於 在客戶端建立一個數據庫分部(即DataSet),在總部查詢資訊後通過fill方法填充DataSet,然後我們操作資料庫時不需要去資料庫總部拿資料了,只需要去分部(DataSet)中取出資料即可

二、建立的相關物件

  1. DataSet 相當於資料庫分部,可以存放多個數據表
  2. DataTable 從DataSet中複製一個數據表(只能是一個數據表)
  3. DataRow 存放DataTable中資料表的一行記錄

三、使用DataAdapter

3.1、增

/*******************必不可少的***************************/
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
/*********************必不可少的*************************/

string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
//建立DataSet物件
DataSet ds = new DataSet();
//建立DataTable物件
DataTable dtable;
//建立DataRow物件
DataRow drow;
//開啟連線
sqlconn.Open();
//建立DataAdapter物件
SqlDataAdapter sqld = new SqlDataAdapter("select * from student", sqlconn);
//建立 CommandBuilder 物件來自動生成 DataAdapter 的 Command 命令,否則就要自己編寫
//Insertcommand ,deletecommand , updatecommand 命令。
SqlCommandBuilder cb = new SqlCommandBuilder(sqld);
//用Fill方法返回的資料,填充DataSet,資料表取名為tabstudent
sqld.Fill(ds, "tabstudent");
//將資料表tabstudent的資料複製到DataTable物件
dtable = ds.Tables["tabstudent"];
//增加新記錄
drow = ds.Tables["tabstudent"].NewRow();
//給該記錄賦值
drow[0] = "19";
drow[1] = "陳峰";
drow[2] = "男";
ds.Tables["tabstudent"].Rows.Add(drow);
//提交更新
sqld.Update(ds, "tabstudent");
sqlconn.Close();
sqlconn = null;
Label1.Text = "增加成功";

3.2、刪

/*******************必不可少的***************************/
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
/*********************必不可少的*************************/

string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
DataSet ds = new DataSet();
DataTable dtable;
DataRowCollection coldrow;
DataRow drow;
sqlconn.Open();
//建立DataAdapter物件
SqlDataAdapter sqld = new SqlDataAdapter("select * from student", sqlconn);
//建立 CommandBuilder 物件來自動生成 DataAdapter 的 Command 命令,否則就要自己編寫
//Insertcommand ,deletecommand , updatecommand 命令。
SqlCommandBuilder cb = new SqlCommandBuilder(sqld);
//用Fill方法返回的資料,填充DataSet,資料表取名為tabstudent
sqld.Fill(ds, "tabstudent");
dtable = ds.Tables["tabstudent"];
coldrow = dtable.Rows;
//逐行遍歷,刪除地址為空的記錄
for (int inti = 0; inti < coldrow.Count; inti++)
{
    drow = coldrow[inti];
    if (drow["Adress"].ToString() == "")
        drow.Delete();
}
//提交更新
sqld.Update(ds, "tabstudent");
sqlconn.Close();
sqlconn = null;
Label1.Text = "刪除成功";

3.3、查

/*******************必不可少的***************************/
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
/*********************必不可少的*************************/

string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
//建立DataSet物件
DataSet ds = new DataSet();
//建立DataTable物件
DataTable dtable;
//建立DataRowCollection物件
DataRowCollection coldrow;
//建立DataRow物件
DataRow drow;
//開啟連線
sqlconn.Open();
//建立DataAdapter物件
SqlDataAdapter sqld = new SqlDataAdapter("select * from student", sqlconn);
//用Fill方法返回的資料,填充DataSet,資料表取名為tabstudent
sqld.Fill(ds, "tabstudent");
//將資料表tabstudent的資料複製到DataTable物件
dtable = ds.Tables["tabstudent"];
//用DataRowCollection物件獲取這個資料表的所有資料行
coldrow = dtable.Rows;
//逐行遍歷,取出各行的資料
for (int inti = 0; inti < coldrow.Count; inti++)
{
    drow = coldrow[inti];
    Label1.Text += "學號:" + drow[0];
    Label1.Text += " 姓名:" + drow[1];
    Label1.Text += " 性別:" + drow[2];
    Label1.Text += " 出生日期:" + drow[3];
    Label1.Text += " 地址:" + drow[4] + "<br />";
}
sqlconn.Close();
sqlconn = null;

3.4、改

/*******************必不可少的***************************/
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
/*********************必不可少的*************************/

string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
SqlConnection sqlconn = new SqlConnection(sqlconnstr);
//建立DataSet物件
DataSet ds = new DataSet();
//建立DataTable物件
DataTable dtable;
//建立DataRowCollection物件
DataRowCollection coldrow;
//建立DataRow物件
DataRow drow;
//開啟連線
sqlconn.Open();
//建立DataAdapter物件
SqlDataAdapter sqld = new SqlDataAdapter("select * from student", sqlconn);
//自己定義Update命令,其中@NAME,@NO是兩個引數
sqld.UpdateCommand = new SqlCommand("UPDATE student SET NAME = @NAME WHERE NO = @NO", sqlconn);
//定義@NAME引數,對應於student表的NAME列
sqld.UpdateCommand.Parameters.Add("@NAME", SqlDbType.VarChar, 50, "NAME");
//定義@NO引數,對應於student表的NO列,而且@NO是修改前的原值
SqlParameter parameter = sqld.UpdateCommand.Parameters.Add("@NO", SqlDbType.VarChar, 10);
parameter.SourceColumn = "NO";
parameter.SourceVersion = DataRowVersion.Original;
//用Fill方法返回的資料,填充DataSet,資料表取名為tabstudent
sqld.Fill(ds, "tabstudent");
//將資料表tabstudent的資料複製到DataTable物件
dtable = ds.Tables["tabstudent"];
//用DataRowCollection物件獲取這個資料表的所有資料行
coldrow = dtable.Rows;
//修改操作,逐行遍歷,取出各行的資料
for (int inti = 0; inti < coldrow.Count; inti++)
{
    drow = coldrow[inti];
    //給每位學生姓名後加上字母A
    drow[1]=drow[1]+"A";
}
//提交更新
sqld.Update(ds, "tabstudent");
sqlconn.Close();
sqlconn = null;
Label1.Text = "更新成功";