標籤:dataset 移動 client 機器 唯讀 uil reader 情況下 理解
DataSet對象
當應用程式需要查詢資料時,可以使用DataReader對象讀取資料,DataReader每次都只能讀取一行資料到記憶體中,並且要一直與資料庫保持串連.而且是唯讀只進型的讀取方法.給程式想再次獲得讀取過的資料帶來了麻煩.利用資料集,我們可以在斷開與資料庫連接的情況下操作資料,可以操作來自多個相同或不同資料來源的資料
1.1認識DataSet對象
我們可以把資料集簡單的理解為一個臨時的資料庫,他把應用程式需要的資料臨時儲存在記憶體中,由於這些資料都緩衝在本地機器上,就不需要一直儲存和資料庫的串連.當應用程式需要資料時,就直接從記憶體中的資料集讀取資料,也可以對資料集中的資料進行修改,然後將修改後的資料一起提交到資料庫.
資料集不直接和資料庫打交道,它和資料庫之間的相互作用都是通過.Net資料提供者來完成的,所以資料集是獨立於任何資料庫的.
1.2建立DataSet
DateSet位於System.Data命名空間中,建立DataSet文法如下
[文法]:
DataSet 資料集對象 = new DataSet("資料集的名稱字串");
方法中的參數是資料集的名稱,可以有,也可以沒有,如果沒有寫參數,建立的資料集的名稱預設為NewDataSet.
例如:
DataSet myDataSet = new DataSet();
DataSet myDataSet = new DataSet("MySchool");
2 DataAdapter對象
資料配接器資料庫和DataSet對象串連的橋樑
2.1認識DataAdapter對象
.NET 資料提供者及DataAdapter類
.NET 資料提供者 |
串連類 |
SQL 資料提供者 System.Data.SqlClient命名空間中 |
SqlDataAdapter |
OLE DB 資料提供者 System.Data.OleDb命名空間中 |
OleDbDataAdapter |
ODBC 資料提供者 System.Data.Odbc命名空間中 |
OdbcDataAdapter |
Oracle 資料提供者 System.Data.OracleClient命名空間中 |
OracleDataAdapter |
DataAdapter對象的主要屬性和方法
屬性:SelectCommand 從資料庫檢索資料的Command對象
方法
Fill() 向DataSet中的表填充資料
Update 將DataSet中的資料提交到資料庫
2.2填充資料集
使用DataAdapter填充資料集需要四個步驟
(1)建立資料庫連接對象
(2)建立從資料庫查詢資料用的SQL語句
(3)利用上面建立的SQL語句和Connection對象建立DataAdapter對象
文法:
SqlDataAdapter 對象名 = new SqlDataAdapter(查詢用的SQL語句,資料庫連接);
或者
SqlDataAdqpter adapter = new SqlDataAdapter();
SqlCommand command = new SqlCommand(查詢用的SQL語句,資料庫連接);
adapter.SelectCommand = command;
(4)調用DataAdapter對象的Fill方法填充資料集
文法:
DataAdapter對象.Fill(資料集對象,"資料表名稱字串");
Fill()方法接收一個資料表名稱的字串參數.如果資料集中原來沒有這個資料表,調用Fill()方法後就會建立一個資料表.如果資料集中原來有這個資料表,就會把現在查出的結果繼續添加到資料表中.
經驗:
建立一個DataAdapter對象,都與Connection.Command對象有關,並且要編寫SQL語句
在不同的程式碼片段中,Connection對象出現的位置可能不同
3.資料繫結
資料繫結是為了在控制項上顯示資料庫中儲存的資料,而將應用程式的控制項與資料庫的任何列或行進行綁定的過程.VS使用DataSource屬性為我們提供了靜態和動態資料繫結,教好的解決了這個問題,降低了代碼的複雜度
3.1ComboBox資料繫結
通過組合框實現綁定資料時,常使用的屬性為:
DataSource 擷取或設定資料來源
DisplayMember 擷取或設定要為此ListContiol顯示的屬性
ValueMember 擷取或設定一個屬性,該屬性將用做ListControl中項的實際值.
4.認識DataGridView控制項
資料格視圖控制項是一個很強大的控制項,在DataGridView中還可以直接修改和刪除資料.
DataGridView控制項能夠以表格的形式顯示資料,可以設定為唯讀,也可以允許編輯資料.要想指定DataGridView顯示哪個表的資料,只需要設定他的DataSource屬性,使用一行代碼就能實現
主要屬性:
Columns 包含列的集合
DataSource DataView的資料來源
ReadOnly 是否可以編輯儲存格
各列的主要屬性:
DataPropertyName 綁定資料列的名稱
HeaderText 欄位標題文本
Visible 制定列是否可見
Frozen 指定水平滾動DataGridView時列是否移動
ReadOnly 指定儲存格是否為唯讀
4.使用DataGridView控制項顯示資料
(1)添加控制項
(2)設定DataGridView的屬性和各列的屬性
(3)篩選資訊(查詢用)
(4)綁定DataGridView的資料來源
4.儲存對資料集的修改
(1)使用SqlCommandBuilder對象產生更新用的相關命令
[文法]:
sqlCommandBuilder Builder = new SqlCommandBuilder(已建立的DataAdaptr對象);
(2)調用DataAdapter對象的Update方法
DataAdaptre對象.Update(資料集對象,"資料表名稱字串");
經驗:
SqlCommandBuilder只操作單個表.也就是說,建立DataAdaptr對象時.使用的SQL語句只能從一個表裡面查資料,不能進行聯集查詢.
常見錯誤:
(1)不使用sqlCommandBuilder直接調用Updata()方法
(2)利用DataGridView顯示資料集中表時,沒有為他的列設定DataPropertName屬性
構建布局良好的Windows程式