最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#利用IDbDataAdapter/IDataReader實(shí)現(xiàn)通用數(shù)據(jù)集獲取

 更新時(shí)間:2024年11月04日 08:48:07   作者:初九之潛龍勿用  
這篇文章主要為大家詳細(xì)介紹了C#利用IDbDataAdapter/IDataReader實(shí)現(xiàn)通用數(shù)據(jù)集獲取的相關(guān)知識(shí),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

關(guān)于數(shù)據(jù)集

在.net 應(yīng)用中,與數(shù)據(jù)庫(kù)進(jìn)行連接并查詢相關(guān)數(shù)據(jù),填充到數(shù)據(jù)集是我們經(jīng)常用到的功能,數(shù)據(jù)集的表現(xiàn)形式基本包括如下:

1、 DataSet

DataSet 是 ADO.NET 中的數(shù)據(jù)集合對(duì)象,可以通過 IDbDataAdapter 接口對(duì)象,其表示一組與命令有關(guān)的屬性,用于填充 DataSet 和更新數(shù)據(jù)源。DataSet 相當(dāng)于內(nèi)存中的數(shù)據(jù)庫(kù),可以容納復(fù)雜關(guān)系的數(shù)據(jù),而且即使斷開數(shù)據(jù)鏈路,依然可以繼續(xù)獨(dú)立的操作。生成的 DataSet 由一組 DataTable 對(duì)象組成,即數(shù)據(jù)表集合。

2、 DataReader

DataReader 也是數(shù)據(jù)集的一種形式,它與 DataSet 的區(qū)別在于,其只允許以只讀、順序向下的方式查看其中所存儲(chǔ)的數(shù)據(jù),高效和簡(jiǎn)單,是一種非常節(jié)省資源的數(shù)據(jù)對(duì)象,如果我們不考慮后續(xù)操作,只是顯示數(shù)據(jù),則 DataReader 對(duì)象幾乎是首選。

生成數(shù)據(jù)集對(duì)象需要利用 ADO.NET 中的數(shù)據(jù)提供者對(duì)象包括IDbConnection、IDbCommand、IDbDataParameter等,如何使用這些對(duì)象請(qǐng)參考我的文章:

《C#實(shí)現(xiàn) IDbConnection / IDbCommand 等相關(guān)通用數(shù)據(jù)接口》

本文將介紹如何通過利用IDbDataAdapter / IDataReader 實(shí)現(xiàn)通用數(shù)據(jù)集獲取。

獲取數(shù)據(jù)集的執(zhí)行流程

首先需要?jiǎng)?chuàng)建連接對(duì)象,成功后下達(dá)符合對(duì)應(yīng)數(shù)據(jù)庫(kù)規(guī)范的命令指令,該指令可能包括需要的參數(shù)對(duì)象(需要定義名稱和賦值等操作),通過數(shù)據(jù)適配器 IDbDataAdapter 接口對(duì)象填充到DataSet或通過命令對(duì)象() ExecuteReader 填充到 DataReader,大體流程如下圖:

范例運(yùn)行環(huán)境

操作系統(tǒng): Windows Server 2019 DataCenter

.net版本: .netFramework4.7.1 或以上

開發(fā)工具:VS2019  C#

數(shù)據(jù)庫(kù):在這里我們以支持 Oracle 9i、MS SQL Server 2016、國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù) 8 為例

通用對(duì)象的設(shè)計(jì)與實(shí)現(xiàn)

引用

在實(shí)現(xiàn)方法前請(qǐng)引用如下代碼:

using System.Data;
using System.Data.SqlClient;
using System.Data.OracleClient;
using Dm;
using System.Collections;

GetDataAdapter方法

GetDataAdapter 方法返回 System.Data.IDbDataAdapter 數(shù)據(jù)適配器對(duì)象,其參數(shù)說明見下表:

序號(hào)參數(shù)名類型說明
1dbServerTypestring目前支持 "oracle"、 "dm8",其它字符串均視為 MS SQL Server

實(shí)現(xiàn)代碼如下:

public System.Data.IDbDataAdapter GetDataAdapter(string dbservertype)
{
    IDbDataAdapter adp = null;
    switch (dbservertype.ToLower())
    {
        case "oracle": adp =new OracleDataAdapter(); break;
        case "dm8": adp = new  DmDataAdapter(); break;
        default: adp =new SqlDataAdapter(); break;
    }
    return adp;
}

獲取數(shù)據(jù)集的設(shè)計(jì)與實(shí)現(xiàn)

GetDataSet方法

GetDataSet 方法返回 object 對(duì)象,如果生成成功則返回 DataSet 對(duì)象,失敗則返回錯(cuò)誤信息字符串,其參數(shù)說明見下表:

序號(hào)參數(shù)名類型說明
1DbServerTypestring目前支持 "oracle"、 "dm8",其它字符串均視為 MS SQL Server
2strConnstring對(duì)應(yīng)數(shù)據(jù)庫(kù)的連接字符串
3_sqlstring要執(zhí)行的SQL語(yǔ)句命令行
4parasArrayList要賦值的參數(shù)對(duì)象,逐個(gè)添加到ArrayList里,請(qǐng)注意參數(shù)為實(shí)體數(shù)據(jù)參數(shù)對(duì)象,如 MS SQL Server ,請(qǐng)傳遞如下代碼:
ArrayList.Add(new SqlParameter("參數(shù)名",參數(shù)值)); 
5ctCommandTypeSystem.Data.CommandType 枚舉,可包括:
StoredProcedure(存儲(chǔ)過程)
TableDirect(直接表查詢)
Text(文本查詢)該值為默認(rèn)值

有關(guān) CommandType 的更多資料請(qǐng)參考如下鏈接:

https://learn.microsoft.com/zh-CN/dotnet/api/system.data.commandtype

實(shí)現(xiàn)代碼如下:

public object GetDataSet(string DbServerType,string strConn,string _sql,ArrayList paras,CommandType ct)
{
            System.Data.IDbConnection Conn=GetConnection(DbServerType,strConn);
            System.Data.IDbCommand Cmd=GetCommand(DbServerType,_sql,paras,Conn);
            Cmd.CommandType=ct;
            DataSet ds=new DataSet();
            try
            {
                ds.EnforceConstraints=false;
                Conn.Open();
                System.Data.IDbDataAdapter adp=GetDataAdapter(DbServerType);
                adp.SelectCommand=Cmd;
                
                adp.FillSchema(ds,System.Data.SchemaType.Mapped);
                adp.Fill(ds);
                return ds;
            }
            catch (Exception e)
            {
                return e.Message;
            }
            finally
            {
                if(Conn.State==ConnectionState.Open)
                {
                    Conn.Close();
                }
            }
}

GetReaderData方法

GetReaderData 方法返回 IDataReader 對(duì)象,其參數(shù)說明見下表:

序號(hào)參數(shù)名類型說明
1DbServerTypestring目前支持 "oracle"、 "dm8",其它字符串均視為 MS SQL Server
2strConnstring對(duì)應(yīng)數(shù)據(jù)庫(kù)的連接字符串
3_sqlstring要執(zhí)行的SQL語(yǔ)句命令行
4parasArrayList 要賦值的參數(shù)對(duì)象,逐個(gè)添加到ArrayList里,請(qǐng)注意參數(shù)為實(shí)體數(shù)據(jù)參數(shù)對(duì)象,如 MS SQL Server ,請(qǐng)傳遞如下代碼:
ArrayList.Add(new SqlParameter("參數(shù)名",參數(shù)值)); 
5ctCommandTypeSystem.Data.CommandType 枚舉,可包括:
StoredProcedure(存儲(chǔ)過程)
TableDirect(直接表查詢)
Text(文本查詢)該值為默認(rèn)值

有關(guān) CommandType 的更多資料請(qǐng)參考如下鏈接:

https://learn.microsoft.com/zh-CN/dotnet/api/system.data.commandtype

實(shí)現(xiàn)代碼如下:

public System.Data.IDataReader GetDataReader2(string DbServerType,string strConn,string _sql, ArrayList paras, CommandType ct)
{
      System.Data.IDbConnection Conn = GetConnection(DbServerType, strConn);
      System.Data.IDbCommand Cmd = GetCommand(DbServerType, _sql, paras, Conn);
      Cmd.CommandType = ct;
      Cmd.Connection = Conn;
      Conn.Open();
      return Cmd.ExecuteReader();
 
}

小結(jié)

有關(guān)更多關(guān)于數(shù)據(jù)接口對(duì)象請(qǐng)參考如下鏈接:

https://learn.microsoft.com/zh-CN/dotnet/api/system.data.idataadapter?view=netcore-3.1

IDbConnection 接口 (Microsoft.ReportingServices.DataProcessing) | Microsoft Learn

IDbConnection 接口 (Microsoft.ReportingServices.DataProcessing) | Microsoft Learn

到此這篇關(guān)于C#利用IDbDataAdapter/IDataReader實(shí)現(xiàn)通用數(shù)據(jù)集獲取的文章就介紹到這了,更多相關(guān)C#通用數(shù)據(jù)集獲取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C# 使用GDI繪制雷達(dá)圖的實(shí)例

    C# 使用GDI繪制雷達(dá)圖的實(shí)例

    這篇文章主要介紹了C# 使用GDI繪制雷達(dá)圖,本文通過一段實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • C#實(shí)現(xiàn)改變DataGrid某一行和單元格顏色的方法

    C#實(shí)現(xiàn)改變DataGrid某一行和單元格顏色的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)改變DataGrid某一行和單元格顏色的方法,主要涉及DataGrid控件的添加與使用、數(shù)據(jù)源的綁定、單元格與行的獲取等操作。需要的朋友可以參考下
    2014-09-09
  • c#使用反射調(diào)用類型成員示例

    c#使用反射調(diào)用類型成員示例

    學(xué)習(xí)C#的時(shí)候就知道使用反射可以對(duì)我們編程提供極大的便利(動(dòng)態(tài)的獲取信息、調(diào)用類型成員、創(chuàng)建實(shí)例等等),下面示例說明一下使用方法
    2014-01-01
  • WPF自定義控件的實(shí)現(xiàn)

    WPF自定義控件的實(shí)現(xiàn)

    本文主要介紹了WPF自定義控件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C#讀取寫入文件的3種方式示例代碼

    C#讀取寫入文件的3種方式示例代碼

    最近操作文件頻繁,所以這篇文章主要給大家介紹了關(guān)于C#讀取寫入文件的3種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 詳解C#中的泛型以及編程中使用泛型的優(yōu)點(diǎn)

    詳解C#中的泛型以及編程中使用泛型的優(yōu)點(diǎn)

    這篇文章主要介紹了詳解C#中的泛型以及編程中使用泛型的優(yōu)點(diǎn),對(duì)泛型的支持時(shí)C#語(yǔ)言中的重要特性,需要的朋友可以參考下
    2016-02-02
  • Unity3d 如何更改Button的背景色

    Unity3d 如何更改Button的背景色

    這篇文章主要介紹了unity3d GUI.Button 自定義字體大小及透明背景方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#使用控制臺(tái)列出當(dāng)前所有可用的打印機(jī)列表

    C#使用控制臺(tái)列出當(dāng)前所有可用的打印機(jī)列表

    這篇文章主要介紹了C#使用控制臺(tái)列出當(dāng)前所有可用的打印機(jī)列表,涉及C#操作計(jì)算機(jī)硬件的相關(guān)使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 基于C#動(dòng)手實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器Web Server

    基于C#動(dòng)手實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器Web Server

    這篇文章主要為大家詳細(xì)介紹了基于C#動(dòng)手實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器Web Server,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C#獲取全部目錄和文件的簡(jiǎn)單實(shí)例

    C#獲取全部目錄和文件的簡(jiǎn)單實(shí)例

    這篇文章介紹了C#獲取全部目錄和文件的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下
    2013-10-10

最新評(píng)論

梁山县| 武义县| 章丘市| 望谟县| 阿克陶县| 裕民县| 仁布县| 合江县| 福州市| 布尔津县| 汉川市| 罗定市| 曲麻莱县| 高雄县| 类乌齐县| 昌乐县| 徐闻县| 徐汇区| 红原县| 长丰县| 北票市| 元阳县| 阿拉善盟| 甘孜县| 叶城县| 海安县| 金溪县| 博乐市| 通海县| 黑河市| 陈巴尔虎旗| 威海市| 南岸区| 宜君县| 个旧市| 固安县| 平舆县| 虹口区| 新平| 乌鲁木齐市| 友谊县|