• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:41:10
    文檔

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

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

    一、弱類型DataSet的缺點:
    1、只能通過列名引用,dataset.Tables[0].Rows[0]["Age"],如果寫錯了列名編譯時不會發(fā)現(xiàn)錯誤,因此開發(fā)時必須要記著列名。
    2、int age=Convert.ToInt32(dataset.Rows[0]["Age"]),取到的字段的值是object類型,必須小心翼翼的進(jìn)行類型轉(zhuǎn)換,不僅麻煩,而且容易出錯。
    3、將DataSet傳遞給其他使用者,使用者很難識別出有哪些列可以供使用。
    4、運行時才能知道所有列名,數(shù)據(jù)綁定麻煩,無法使用Winform、ASP.Net的快速開發(fā)功能。
    5、自己動手寫強(qiáng)類型DataSet(類型化DataSet,TypedDataSet),創(chuàng)建繼承自DataSet的PersonDataSet類,封裝出int? Age等屬性和bool IsAgeNull等方法,向PersonDataSet中填充。

    二、VS自動生成強(qiáng)類型DataSet:
    1、步驟:添加->新建項->數(shù)據(jù)集
    2、將表從服務(wù)器資源管理器拖放到DataSet中。注意拖放過程是自動根據(jù)表結(jié)構(gòu)生成強(qiáng)類型DataSet等類,沒有把數(shù)據(jù)也拖過來,程序還是連的那個數(shù)據(jù)庫,自動將數(shù)據(jù)庫連接字符串寫在了App.Config中。
    3、代碼中使用DataSet示例:CC_RecordTableAdapter adapter=new CC_RecordTableAdapter();如何得知Adapter的類名?選中DataSet中下半部分的Adapter,Name屬性就是類名。需要右鍵點擊類名->解析
    4、取得所有的數(shù)據(jù):adapter.GetData(),例子程序:遍歷顯示所有數(shù)據(jù),i<adapter.GetData().Count;adapter.GetData()[i].Age。
    5、常見問題:類名敲不對,表名+TableAdapter,表名+DataTable,表名+Row,然后用“解析”來填充類名。
    6、常見問題:類的內(nèi)部定義的類要通過包含namespace的全名來引用,不能省略。類的內(nèi)部定義的類就能避免同一個namespace下類不能重名的問題。

    三、更新DataSet:
    1、調(diào)用Adapter的Update方法就可以將DataSet的改變保存到數(shù)據(jù)庫。adapter.Update(datatable);
    2、要調(diào)用Update方法更新必須設(shè)置數(shù)據(jù)庫主鍵,同樣,Delete方法也是如此;
    3、常見錯誤:“當(dāng)傳遞具有已修改行的DataRow集合時,更新要求有效的UpdateCommand”,要為表設(shè)置主鍵。“誰都變了,唯有主鍵不會變”,程序要通過主鍵來定位要更新的行。忘了設(shè)主鍵怎么辦?先到數(shù)據(jù)庫中設(shè)置主鍵,然后在DataSet的對應(yīng)DataTable上點擊右鍵,選擇“配置”,在對話框中點擊“完成”。好習(xí)慣:所有表都要設(shè)置主鍵!!!看看為什么會自動幫我們GetData、Update、Delete。   
    現(xiàn)在做個簡單的練習(xí):
    第一步:添加一個數(shù)據(jù)庫,名為DB1.mdf(表T_Persons含有Id,Name,Age字段)
    第二步:添加一個應(yīng)用程序配置文件: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>

    第三步:再添加一個數(shù)據(jù)集文件:DataSetPersons.xsd,并將表T_Persons拖到數(shù)據(jù)集上。
    第四步:在窗體Form1界面放一按鈕,當(dāng)單擊它時逐個地顯示出數(shù)據(jù)庫表里的所有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則變?yōu)槿躅愋土?BR>             {
                     類型化DataSet.DataSetPersons.T_PersonsRow person = personsTable[i];
                     MessageBox.Show(person.Name);
                 }
             }
         }
     }

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

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

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

    文檔

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

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产精品成人99久久久久91gav| 欧美亚洲另类精品第一页| 北岛玲日韩精品一区二区三区| 色欲国产麻豆一精品一AV一免费| 黑巨人与欧美精品一区| 久久亚洲欧美日本精品| 91视频精品全国免费观看| 亚洲国产精品18久久久久久| 久久e热在这里只有国产中文精品99| 亚洲国产精品国自产拍电影| 国产精品成人A区在线观看 | 久久精品国产亚洲AV麻豆网站| 免费看一级毛片在线观看精品视频 | 国产精品天天影视久久综合网 | 午夜精品久久久久久中宇| 日本一区二区三区精品国产 | 亚洲日韩欧美制服精品二区| 久久精品国产清自在天天线| 国产精品igao视频| 99久久国产综合精品五月天喷水 | 精品久久无码中文字幕| 亚洲AV日韩精品久久久久| 中文字幕精品一区| 亚洲а∨天堂久久精品9966| 久久久这里有精品中文字幕| 麻豆国产高清精品国在线| 精品人妻伦一二三区久久| 国产亚洲曝欧美不卡精品| 国产精品九九九| 国产精品国产三级国产AⅤ| 国产精品.XX视频.XXTV| 国产精品毛片无码| 精品精品国产理论在线观看| 久久精品这里只有精99品| 久久久精品无码专区不卡| 欧美成人精品一区二三区在线观看 | 国产亚洲精品高清在线| 国产午夜福利精品久久| 国产精品午夜久久| 久久久久人妻一区精品| 色婷婷久久久SWAG精品|