国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

ADO.Net 類型化DataSet的簡單介紹

來源:懂視網 責編:小采 時間:2020-11-27 22:41:10
文檔

ADO.Net 類型化DataSet的簡單介紹

ADO.Net 類型化DataSet的簡單介紹:一、弱類型DataSet的缺點:1、只能通過列名引用,dataset.Tables[0].Rows[0][Age],如果寫錯了列名編譯時不會發現錯誤,因此開發時必須要記著列名。2、int age=Convert.ToInt32(dataset.Rows[0][Age]),取到的字段的值是object類
推薦度:
導讀ADO.Net 類型化DataSet的簡單介紹:一、弱類型DataSet的缺點:1、只能通過列名引用,dataset.Tables[0].Rows[0][Age],如果寫錯了列名編譯時不會發現錯誤,因此開發時必須要記著列名。2、int age=Convert.ToInt32(dataset.Rows[0][Age]),取到的字段的值是object類

一、弱類型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”,要為表設置主鍵?!罢l都變了,唯有主鍵不會變”,程序要通過主鍵來定位要更新的行。忘了設主鍵怎么辦?先到數據庫中設置主鍵,然后在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>
        <add name="類型化DataSet.Properties.Settings.DB1ConnectionString"
            connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB1.mdf;Integrated Security=True;User Instance=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

第三步:再添加一個數據集文件:DataSetPersons.xsd,并將表T_Persons拖到數據集上。
第四步:在窗體Form1界面放一按鈕,當單擊它時逐個地顯示出數據庫表里的所有Name。窗體代碼如下:

代碼如下:
  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Linq;
  using System.Text;
  using System.Windows.Forms;
  using 類型化DataSet.DataSetPersonsTableAdapters;

 namespace 類型化DataSet
 {
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }

         private void Show_Click(object sender, EventArgs e)
         {
             //表名+TableAdapter,表名+DataTable,表名+Rows,然后用“解析”來填充類名
             T_PersonsTableAdapter adapter = new T_PersonsTableAdapter();
             類型化DataSet.DataSetPersons.T_PersonsDataTable personsTable = adapter.GetData();
             for (int i = 0; i < personsTable.Count; i++)//假如是personsTable.Rows.Count則變為弱類型了
             {
                 類型化DataSet.DataSetPersons.T_PersonsRow person = personsTable[i];
                 MessageBox.Show(person.Name);
             }
         }
     }
 }

提醒:對于上面引用類內部的類的情況,寫類時的方法是:表名+TableAdapter,表名+DataTable,表名+Rows,然后用“解析”來填充類名。

四、其它問題:
1、插入新行,調用Insert方法。
2、數據庫表中增加了字段后怎么辦?DataSet設計器中點【配置】,對話框中點【查詢生成器】,勾選新增加的字段即可。刪除字段同樣如此。
3、要修改字段就要重新配置生成,這就是強類型DataSet的弱點。
4、常見錯誤:報錯、數據為空。判斷列的值為空的方法:Is**Null
5、為什么Select方法會填充、Update方法會更新、Insert方法會插入?看看Adapter的SelectCommand等屬性就知道了,都是那些SQL語句在起作用,如果有需要完全可以手工調整。  如: 
代碼如下:
     personsTable[0].Name = "Lucy";
            adapter.Update(personsTable);//調用Update方法將對數據集的修改更新到數據庫
            adapter.Insert("John", 50);

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

ADO.Net 類型化DataSet的簡單介紹

ADO.Net 類型化DataSet的簡單介紹:一、弱類型DataSet的缺點:1、只能通過列名引用,dataset.Tables[0].Rows[0][Age],如果寫錯了列名編譯時不會發現錯誤,因此開發時必須要記著列名。2、int age=Convert.ToInt32(dataset.Rows[0][Age]),取到的字段的值是object類
推薦度:
標簽: net data ado.net
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 九九精品视频一区在线 | 精品国产欧美一区二区三区成人 | 亚洲综合精品一区二区三区中文 | 亚洲欧美日韩中文字幕一区二区三区 | a级毛片在线播放 | 亚洲欧洲视频在线 | 一区二区三区四区亚洲 | 在线欧美精品二区三区 | 亚州一区二区 | 亚洲一区 中文字幕 久久 | 婷婷综合色 | 国产精品成人第一区 | 精品国产一区二区三区久久久狼 | 另类欧美日韩 | 亚洲国产精品一区二区三区 | 国产成人精品一区二区免费视频 | 国产全黄a一级毛片视频 | xx日韩 | 日韩精品一区二区三区不卡 | 欧美国产日韩一区二区三区 | 精品一区二区三区在线观看 | 日本精品一区二区三区在线观看 | 中文字幕高清 | 亚洲 欧美 日韩 在线 | 高清国产美女一级a毛片 | 国产一级特黄全黄毛片 | 一级a毛片免费观看久久精品 | 久久久视 | 国产精品第十页 | a黄毛片 | 欧美中文在线 | 亚洲第一欧美 | 欧美亚洲综合一区 | 国产麻豆91| 精品久久亚洲一级α | 国产短视频精品一区二区三区 | 亚洲专区欧美 | 亚洲图区欧美 | 伊人久久精品久久亚洲一区 | 欧美a在线播放 | 亚洲一区二区三区久久精品 |