使用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