一、弱類型DataSet的缺點:
1、只能通過列名引用,dataset.Tables[0].Rows[0]["Age"],如果寫錯了列名編譯時不會發現錯誤,因此開發時必須要記著列名。
2、int age=Convert.ToInt32(dataset.Rows[0]["Age"]),取到的字段的值是object類型,必須小心翼翼的進行類型轉換,不僅麻煩,而且容易出錯。
3、將DataSet傳遞給其他使用者,使用者很難識別出有哪些列可以供使用。
4、運行時才能知道所有列名,數據綁定麻煩,無法使用Winform、ASP.Net的快速開發功能。
5、自己動手寫強類型DataSet(類型化DataSet,TypedDataSet),創建繼承自DataSet的PersonDataSet類,封裝出int? Age等屬性和bool IsAgeNull等方法,向PersonDataSet中填充。
二、VS自動生成強類型DataSet:
1、步驟:添加->新建項->數據集
2、將表從服務器資源管理器拖放到DataSet中。注意拖放過程是自動根據表結構生成強類型DataSet等類,沒有把數據也拖過來,程序還是連的那個數據庫,自動將數據庫連接字符串寫在了App.Config中。
3、代碼中使用DataSet示例:CC_RecordTableAdapter adapter=new CC_RecordTableAdapter();如何得知Adapter的類名?選中DataSet中下半部分的Adapter,Name屬性就是類名。需要右鍵點擊類名->解析
4、取得所有的數據:adapter.GetData(),例子程序:遍歷顯示所有數據,i<adapter.GetData().Count;adapter.GetData()[i].Age。
5、常見問題:類名敲不對,表名+TableAdapter,表名+DataTable,表名+Row,然后用“解析”來填充類名。
6、常見問題:類的內部定義的類要通過包含namespace的全名來引用,不能省略。類的內部定義的類就能避免同一個namespace下類不能重名的問題。
三、更新DataSet:
1、調用Adapter的Update方法就可以將DataSet的改變保存到數據庫。adapter.Update(datatable);
2、要調用Update方法更新必須設置數據庫主鍵,同樣,Delete方法也是如此;
3、常見錯誤:“當傳遞具有已修改行的DataRow集合時,更新要求有效的UpdateCommand”,要為表設置主鍵。“誰都變了,唯有主鍵不會變”,程序要通過主鍵來定位要更新的行。忘了設主鍵怎么辦?先到數據庫中設置主鍵,然后在DataSet的對應DataTable上點擊右鍵,選擇“配置”,在對話框中點擊“完成”。好習慣:所有表都要設置主鍵!!!看看為什么會自動幫我們GetData、Update、Delete。
現在做個簡單的練習:
第一步:添加一個數據庫,名為DB1.mdf(表T_Persons含有Id,Name,Age字段)
第二步:添加一個應用程序配置文件:App.config文件,其代碼如下:
代碼如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
新聞熱點
疑難解答
圖片精選