欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2013年04月27日 14:42:30   作者:  
今天學(xué)習(xí)了類型化DataSet,筆記整理如下,需要的朋友可以參考一下

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

二、VS自動生成強類型DataSet:
1、步驟:添加->新建項->數(shù)據(jù)集
2、將表從服務(wù)器資源管理器拖放到DataSet中。注意拖放過程是自動根據(jù)表結(jié)構(gòu)生成強類型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、常見錯誤:“當傳遞具有已修改行的DataRow集合時,更新要求有效的UpdateCommand”,要為表設(shè)置主鍵?!罢l都變了,唯有主鍵不會變”,程序要通過主鍵來定位要更新的行。忘了設(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文件,其代碼如下:

復(fù)制代碼 代碼如下:

<?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界面放一按鈕,當單擊它時逐個地顯示出數(shù)據(jù)庫表里的所有Name。窗體代碼如下:

復(fù)制代碼 代碼如下:

  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、要修改字段就要重新配置生成,這就是強類型DataSet的弱點。
4、常見錯誤:報錯、數(shù)據(jù)為空。判斷列的值為空的方法:Is**Null
5、為什么Select方法會填充、Update方法會更新、Insert方法會插入?看看Adapter的SelectCommand等屬性就知道了,都是那些SQL語句在起作用,如果有需要完全可以手工調(diào)整。  如: 

復(fù)制代碼 代碼如下:

     personsTable[0].Name = "Lucy";
            adapter.Update(personsTable);//調(diào)用Update方法將對數(shù)據(jù)集的修改更新到數(shù)據(jù)庫
            adapter.Insert("John", 50);

相關(guān)文章

  • .NET6接入Skywalking鏈路追蹤詳細過程

    .NET6接入Skywalking鏈路追蹤詳細過程

    Skywalking是一款分布式鏈路追蹤組件,隨著微服務(wù)架構(gòu)的流行,服務(wù)按照不同的維度進行拆分,一次請求往往需要涉及到多個服務(wù),這篇文章主要介紹了.NET6接入Skywalking鏈路追蹤完整流程,需要的朋友可以參考下
    2022-06-06
  • ASP.NET中Global和URLReWrite用法

    ASP.NET中Global和URLReWrite用法

    這篇文章主要介紹了ASP.NET中Global和URLReWrite用法,較為深入淺出的分析了Global.asax的功能及配置技巧,并實例分析了URLReWrite實現(xiàn)偽靜態(tài)的方法,需要的朋友可以參考下
    2015-06-06
  • 如何利用IIS調(diào)試ASP.NET網(wǎng)站程序詳解

    如何利用IIS調(diào)試ASP.NET網(wǎng)站程序詳解

    這篇文章主要給大家介紹了關(guān)于如何利用IIS調(diào)試ASP.NET網(wǎng)站程序的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • .net core 使用阿里云分布式日志的配置方法

    .net core 使用阿里云分布式日志的配置方法

    本文給大家分享.net core 使用阿里云分布式日志的實現(xiàn)代碼,簡單查詢阿里云日志的工具使用,通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-06-06
  • asp.net中使用repeater和PageDataSource搭配實現(xiàn)分頁代碼

    asp.net中使用repeater和PageDataSource搭配實現(xiàn)分頁代碼

    asp.net中使用repeater和PageDataSource搭配實現(xiàn)分頁代碼,需要的朋友可以參考下
    2013-04-04
  • ASP.NET中圖片顯示方法實例

    ASP.NET中圖片顯示方法實例

    這篇文章主要介紹了ASP.NET中圖片顯示方法,實例分析了ASP.NET圖片顯示所涉及的圖片路徑、縮略圖及更新數(shù)據(jù)庫圖片瀏覽次數(shù)等相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • asp.net實現(xiàn)的計算網(wǎng)頁下載速度的代碼

    asp.net實現(xiàn)的計算網(wǎng)頁下載速度的代碼

    剛看到有人給出asp.net實現(xiàn)的計算網(wǎng)頁下載速度的方法,本方法未經(jīng)本人測試,不知道能否可靠性如何。準確來說,這只是個思路吧
    2013-03-03
  • asp.net Gridview里添加匯總行

    asp.net Gridview里添加匯總行

    在rowdatabound事件里添加同時showfooter設(shè)為true
    2008-11-11
  • ASP.NET Core對Controller進行單元測試的完整步驟

    ASP.NET Core對Controller進行單元測試的完整步驟

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core對Controller進行單元測試的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • ashx中使用session的方法(獲取session值)

    ashx中使用session的方法(獲取session值)

    ashx中獲取session值的方法,大家參考使用吧
    2013-12-12

最新評論