構建布局良好的Windows程序
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 數據提供程序 | 連接類 |
---|---|
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程序