ADO.NET的兩個核心組件:.NET Framework資料提供者和DataSet
資料提供者包括:Connection對象、Command對象、DataReader對象和DataAdapter對象,用於串連資料來源,執行SQL語句命令和檢索資料,檢索到的資料既可以直接處理也可以放入DataSet對象
DataSet包括DataTable對象集合和DataRelation對象
DataReader對象從資料來源中讀取僅能向前和唯讀資料流
DataAdapter對象執行針對資料來源的各種操作,包括更新、插入等
1.Connection對象
ADO.NET提供了四種串連方式:System.Data.OleDb.OleDbConnection、System.Data.SqlClient.SqlConnection、System.Data.Odbc.OdbcConnection、System.Data.OracleClient.OracleConnection,最常用SqlConnection
例如:
SqlConnection conn = new SqlConnection("server=localhost;uid=sa;pwd=123456;database=Product");
conn.Open();
conn.Close();
屬性:
ConnectionString 連接字串
Database 擷取當前資料庫或要使用的資料庫名稱
State 串連狀態
DataSource 串連的SQL Server執行個體的名稱
方法:
Open
Close
CreateCommand 建立並返回一個與該串連相關聯的Command對象
BeginTransaction 開始建立資料庫事務
ChangeDatabase 更改資料庫
2.SqlCommand對象
String strSQL="";
SqlCommand cmd = new SqlCommand(strSQL, conn);
屬性:
CommandText 設定或返回對資料來源的命令串,表、預存程序、SQL語句等
CommandType 命令字串的類型
state Command對象的狀態
方法:
Cancel 取消非同步Execute方法,如果Execute方法未指定adRunAsync參數則返回一個錯誤
Execute 執行
ExecuteReader:執行返回行的命令
ExecuteNonQuery:返回受影響的記錄數
ExecuteReader:傳回型別化的DataReader對象
ExecuteScalar:執行的SQL語句應返回一個結果,如記錄個數,伺服器時間等
ExecuteXmlReader:
3.DataReader對象
讀取資料庫的最簡單方式,只能向前讀取,不能寫入,每次只有一行
使用方法:首先開啟資料庫、建立Command對象、執行SQL語句,用ExecuteReader方法返回一個DataReader對象
Access資料庫:OledbDataReader myodr = cmd.ExecuteReader();
SQL Server: SqlDataReader myReader = cmd.ExecuteReader();
屬性:
IsClosed:狀態
FieldCount:欄位數目
Item:({name,ordinal})擷取或設定欄位內容,name為欄位名,ordinal為欄位序號
RecordsAffected:擷取受影響行數
方法:
Close()
GetName(ordinal):取得第ordinal+1列的欄位名稱
GetValue(ordinal):取得ordinal+1列的內容
IsDBNull(orderianl):是否為空白
Read():讀取下一條資料,沒有返回false
String connStr = "server=AE5EC3E392D24E2\\SQLEXPRESS;database=教務管理系統;uid=tjt;pwd=123456";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
if (conn.State == ConnectionState.Open)
{
Response.Write("串連已經開啟!");
}
String strSQL = "select * from Student";
SqlCommand cmd = new SqlCommand(strSQL,conn);
SqlDataReader myReader = cmd.ExecuteReader();
Response.Write(myReader.FieldCount);
while (myReader.Read())
{
Response.Write(myReader[0].ToString() +" "+ myReader[1].ToString() );
}
Response.Write("資料讀取結束!");
4.DataAdapter和DataSet對象
DataAdapter資料配接器是ADO.NETManaged 提供者(用於在資料來源和資料集之間通訊的一組對象)的組成部分,用於在資料來源和資料集之間交換資料。
DataSet資料集是ADO.NET支援斷開式資料訪問的核心組件。,是資料庫檢索記錄的臨時緩衝區。
DataAdapter對象可以建立並初始化資料表(DataTable),對資料來源執行SQL指令,與DataSet對象結合,提供DataSet對象存取資料,可視為DataSet對象的操作核心,是DataSet對象與資料操作對象之間的溝通媒介。
工作流程:由Connection對象建立與資料來源的串連,由Command對象操作SQL指令存取資料,存取的資料通過Connection對象返回給DataAdapter對象,然後DataAdapter對象將資料放入其產生的DataTable對象,最後將DataAdapter對象中的DataTable對象加入到DataSet對象中的DataTables對象中。
Access:OleDbDataAdapter myoda = new OleDbDataAdapter("SQL字串",conn);
SQLServer:SqlDataAdapter mysda = SqlDataAdapter("SQL 字串", conn);
屬性:
DeleteCommand:擷取或設定一個SQL語句或預存程序,以從資料來源刪除記錄
InsertCommand:
SelectCommand:
UpdateCommand:
TableMapping:SqlDataAdapter用來將查詢的結果映射到DataSet的資訊集合中
方法:
Fill:執行儲存於SelectCommand中的查詢,並將結果儲存在DataTable中
FillSchema:為儲存在SelectCommand中的查詢擷取架構資訊,各列名稱和資料類型
DataSet類似於小型的關聯式資料庫,包含一個或多個DataTable對象。
DataTable對象包含DataRow對象的集合、DataColumn對象的集合和Constraint對象的集合,分別存允許存取、列、約束的資訊。
DataSet mydata = new DataSet();
屬性:
HasErrors:是否包含錯誤
Tables:檢查現有的DataTable對象
方法:
Clear:清空,比刪掉重建快
Clone:複製結構建立新的DataSet
Copy:複製結構和資料
String connStr = "server=AE5EC3E392D24E2\\SQLEXPRESS;database=教務管理系統;uid=tjt;pwd=123456";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
if (conn.State == ConnectionState.Open)
{
String strSelectSQL = "select * from Student";
SqlDataAdapter sda = new SqlDataAdapter(); //資料配接器
sda.SelectCommand = new SqlCommand(strSelectSQL,conn); //擷取資料
DataSet ds = new DataSet(); //資料集
sda.Fill(ds); //填充資料集
GridView1.DataSource = ds.Tables[0].DefaultView; //控制項綁定
GridView1.DataBind();
conn.Close();
}
5.DataTable對象
中繼資料和資料的集合,中繼資料通過DataColumn對象和Constraint對象的集合描述,資料則包含在DataRow對象的集合中。
Rows:擷取屬於該表的行的集合
Columns:屬於該表的列的集合
PrimaryKey:指示主鍵
TableName:mingc
方法:
ImportRow:添加具有相同架構的其他DataTable中的DataRow父輩
Select:返回根據提供的參數排序或篩選的DataRow對象的數組
Clear:清除DT資料
**********************************************
資料顯示篇:
GridView控制項:有自動套用格式、分頁等功能。
GetXml:轉換為XML