一、常用属性
名称 | 说明 |
---|---|
Depth | 获取一个值,用于指示当前行的嵌套深度。 |
FieldCount | 获取当前行中的列数。 |
HasRows | 获取一个值,该值指示 SqlDataReader 是否有行。 |
IsClosed | 指定的SqlDataReader 实例是否已关闭。 |
Item[Int32] | 获取指定列(数字索引),通常在While.Read()中使用。 |
Item[String] | 获取指定列(字符串索引), 通常在While.Read()中使用。 |
RecordsAffected | 获取执行 T-SQL 语句所更改、插入或删除的行数。 |
VisibleFieldCount | 获取 SqlDataReader 中未隐藏的字段的数目。 |
示例:
class Program { static void Main(string[] args) { string str = "server=.;database=JunTest;uid=sa;pwd=123;Asynchronous Processing=true"; SqlConnection conn = new SqlConnection(str); //创建连接 SqlCommand cmd = conn.CreateCommand(); //创建SqlCommand对象 cmd.CommandText = "SELECT * FROM Person"; conn.Open(); //打开连接 using (SqlDataReader reader = cmd.ExecuteReader()) { Console.WriteLine(reader.FieldCount); //2 获取列数 Console.WriteLine(reader.Depth); //0 嵌套深度 Console.WriteLine(reader.HasRows); //true 是否包含行 Console.WriteLine(reader.IsClosed); //false SqlDataReader是否关闭 Console.WriteLine(reader.RecordsAffected); //-1 执行T-SQL语句所插入、修改、删除的行数 Console.WriteLine(reader.VisibleFieldCount); //2 未隐藏的字段数目(一共就两列) while (reader.Read()) { Console.WriteLine(reader["PersonName"]); //Console.WriteLine(reader[1]); 通过数字索引或字符串索引访问 } } conn.Close(); //关闭连接 Console.ReadKey(); } }
二、常用方法
名称 | 说明 |
Read | 前进到下一记录,异步版本ReadAsync。 |
GetString | 返回指定类型的值,其他的都类似。 |
NextResult | 当处理批处理的T-SQL语句时,跳到下一结果,异步版本NextResultAsync。 |
GetValue | 获得该列的值,返回object类型。 |
GetValues | 使用当前列指来填充参数中的对象数组。 |
Close | 关闭 SqlDataReader 对象。 |
示例:
class Program { static void Main(string[] args) { string str = "server=.;database=JunTest;uid=sa;pwd=123;Asynchronous Processing=true"; SqlConnection conn = new SqlConnection(str); //创建连接 SqlCommand cmd = conn.CreateCommand(); //创建SqlCommand对象 cmd.CommandText = "SELECT * FROM Person"; conn.Open(); //打开连接 using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine(reader.IsDBNull(1)); //是否是null值 Console.WriteLine(reader.GetString(1)); //Get什么类型就返回什么类型,这没啥好说的。 } Console.WriteLine(reader.GetName(1)); //PersonName 由数字获得列名 Console.WriteLine(reader.GetOrdinal("PersonName")); //1 由列名获取其在reader中的数字索引 if (reader.NextResult()) { Console.WriteLine(reader.GetString(1)); } } conn.Close(); //关闭连接 Console.ReadKey(); } }