国产97色在线|亚洲-欧美人妻另类制服丝袜-欧美人成国产91视频-殷素素一女战二夫|www.ycjrc.net

C# 使用 DataReader 對象訪問 SQL Server 數據庫并讀取數據,DataReader 對象如何使用

發布時間:2021-03-25 12:28 作者:獨孤劍 閱讀:3030

DataReader對象提供了用順序的,只讀的方式讀取Command對象獲得的數據結果集,正是因為DataReader是以順序的方式連續的讀取數據,所有DataReader會以獨占的方式打開數據庫的連接,由于DataReader只執行讀的操作(只讀),并且每次只在內存緩沖區里存儲結果集中的一條數據,所有使用DataReader的對象的效率比較高,如果要查詢大量數據,同時不需要隨機訪問和修改數據,DataReader是優先的選擇。

DataReader 對象的常用屬性
    FieldCount 屬性 表示記錄中有多少字段
    HasRows 屬性 用來表示DataReader是否包含數據
    IsClosed 屬性 表示DataReader是否關閉

DataReader對象常用方法
    Close 方法 將DataReader對象關閉
    GetDataTypName 方法 取得指定的字段數據形態(類型)
    GetName 方法 取得指定的字段數據名稱
    GetOrdinal 方法 取得指定字段名稱在記錄中的順序
    GetValue 方法 取得指定字段的數據
    GetValues 方法 取得全部字段的數據
    Read 方法 讀取下一條記錄


創建SQL Server數據庫、數據表:

USE master;
GO
 
--創建數據庫
IF NOT EXISTS(SELECT * FROM dbo.sysdatabases WHERE [name]='TestDB')
    CREATE DATABASE TestDB;
GO
 
--使用數據庫
USE TestDB;
GO
 
--創建用戶表
IF EXISTS(SELECT * FROM sysobjects WHERE [name]='Users')
    DROP TABLE [Users]
GO
CREATE TABLE [Users](
        [Id] [int] IDENTITY(1,1),--主鍵
        [Name] [nvarchar](50) NOT NULL,--姓名
        [Sex] [nvarchar](10),--性別
        PRIMARY KEY([Name])
);
GO
 
INSERT INTO [Users]([Name],[Sex]) VALUES ('Alice','Female');
INSERT INTO [Users]([Name],[Sex]) VALUES ('Amy','Female');
INSERT INTO [Users]([Name],[Sex]) VALUES ('Bruce','Male');


示例代碼:

static void Main(string[] args)
{
    string connectionString = "Data Source=127.0.0.1,1433;Initial Catalog=TestDB;uid=sa;pwd=123456;";
    string sqlstring = "SELECT * FROM [Users];";

    SqlConnection conn = new SqlConnection(connectionString);
    try
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(sqlstring, conn);
        SqlDataReader reader = cmd.ExecuteReader();
        if (reader.HasRows)
        {
            Console.WriteLine("有數據");
        }
        else
        {
            Console.WriteLine("無數據");
        }

        //----------------方法----------------------
        Console.WriteLine("第一列的數據類型:" + reader.GetDataTypeName(0));
        Console.WriteLine("第一列的名稱:" + reader.GetName(0));
        Console.WriteLine("指定名稱序號:" + reader.GetOrdinal("sex"));

        // 訪問DataReader 對象時使用索引要比字段名稱快很多
        while (reader.Read())
        {
            Console.Write(reader[0].ToString() + ",");
            Console.Write(reader[1].ToString() + ",");
            Console.Write(reader["sex"].ToString());

            Console.WriteLine("");
        }

        //----------------屬性----------------------
        Console.WriteLine("表中有幾個字段:" + reader.FieldCount);
        Console.WriteLine("是否關閉:" + reader.IsClosed);
        reader.Close();
        Console.WriteLine("是否關閉:" + reader.IsClosed);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message.ToString());
    }
    finally
    {
        conn.Close();
    }
    Console.Read();
}

微信打賞, 微信掃一掃

支付寶打賞, 支付寶掃一掃

如果文章對您有幫助,歡迎給作者打賞

作者最新文章
開發過程中解決360兼容模式瀏覽器的方法
云南象群向西南方向遷移,云南離群獨象距離象群約12公里
吉林做網站最低價格,吉林企業網站建設價格低至500元起
守象人直擊云南象群最新動向
網站影響百度蜘蛛抓取量的因素有哪些?為什么我的網站Baidu蜘蛛來的次數少?
企業名片
在線客服