發布時間: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(); }
微信打賞, 微信掃一掃
支付寶打賞, 支付寶掃一掃
如果文章對您有幫助,歡迎給作者打賞