數據提供程序包括: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.NET託管提供程序(用於在數據源和數據集之間通信的一組對象)的組成部分,用於在數據源和數據集之間交換數據。
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