使用SqlDataReader获取结果集的信息

数据读取器的元数据属性和方法
方法或属性名
说明
Depth
该属性表示当前行嵌套的深度
FieldCount
该属性表示当前行中的列数
GetDataTypeName
该方法接受索引并返回包含列数据类型的名称的字符串
GetFieldType
该方法接受索引并返回对象的.NET Framework类型
GetName
该方法接受索引并返回指定列的列名
GetOrdinal
该方法接受列名并返回索引
GetSchemaTable
该方法接受列的元数据
HasRows
该属性表示数据读取器是否包含数据行
RecordsAffected
该属性表示已更新、插入或删除的数据行的数目

// 使用SqlDataReader获取结果集的信息
// ResultSetInfo.cs
using System;
using System.Data;
using System.Data.SqlClient;
namespace Ch12
{
    class TypedAccessors
    {
        static void Main( string[] args)
        {
            string strConn = "server=.\\MSSQL2012;integrated security=true;database=Northwind;";
            string sql = "select contactname, contacttitle from customers where contactname like 'M%'";
            SqlConnection conn = new SqlConnection(strConn);
            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);               
                SqlDataReader rdr = cmd.ExecuteReader();
                // 获取列名
                Console.WriteLine( "列    名:\t{0} {1}" ,
                    rdr.GetName(0).PadRight(25),
                    rdr.GetName(1));
                // 获取数据类型
                Console.WriteLine( "数据类型:\t{0} {1}" ,
                    rdr.GetDataTypeName(0).PadRight(25),
                    rdr.GetDataTypeName(1));
                Console.WriteLine( "结    果:" );
                while (rdr.Read())
                {
                    Console.WriteLine( "\t\t{0} {1}" ,
                        rdr.GetString(0).ToString().PadRight(25),
                        rdr.GetString(1));
                }
                // 获取字段数
                Console.WriteLine( "字 段 数:{0}" , rdr.FieldCount);
                // 获取字段信息
                Console.WriteLine( "{0} 是第{1}个字段,数据类型是:{2}" ,
                    rdr.GetName(0),
                    rdr.GetOrdinal( "contactname" ),
                    rdr.GetFieldType(0));
                Console.WriteLine( "{0}是第{1}个字段,数据类型是:{2}" ,
                    rdr.GetName(1),
                    rdr.GetOrdinal( "contacttitle" ),
                    rdr.GetFieldType(0));
                rdr.Close();
            }
            catch( Exception ex)
            {
                Console.WriteLine( "发生错误:" + ex);
            }
            finally
            {
                conn.Close();
                Console.ReadLine();
            }
        }
    }
}
---------------------------
列    名:       contactname               contacttitle
数据类型:       nvarchar                  nvarchar
结    果:
                Maria Anders              Sales Representative
                Martín Sommer             Owner
                Martine Rancé             Assistant Sales Agent
                Maria Larsson             Owner
                Manuel Pereira            Owner
                Mario Pontes              Accounting Manager
                Marie Bertrand            Owner
                Maurizio Moroni           Sales Associate
                Michael Holz              Sales Manager
                Miguel Angel Paolino      Owner
                Mary Saveley              Sales Agent
                Matti Karttunen           Owner/Marketing Assistant
字 段 数:2
contactname 是第0个字段,数据类型是:System.String
contacttitle是第1个字段,数据类型是:System.String


来自为知笔记(Wiz)


posted on 2013-08-22 00:25  伊利丹  阅读(1559)  评论(0编辑  收藏  举报