--
--11.4.1节示例
--
使用SqlDataReader读取数据
string sql = "select * from Person.AddressType";//定义SQL语句返回所有AddressType行
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader = cmd.ExecuteReader();//执行SQL查询返回SqlDataReader
while (reader.Read())//循环读取每一行
{
Console.WriteLine(reader["AddressTypeID"] + " " + reader["Name"]);//输出读取的行的内容
}
reader.Close();//关闭SqlDataReader
使用SqlDataReader读取两个结果集
string sql = "select * from Person.AddressType;select * from Person.ContactType";
//一个SQL语句中定义了两个查询
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader = cmd.ExecuteReader();//执行SQL查询
while (reader.Read())//循环读取第一个结果集
{
Console.WriteLine(reader["AddressTypeID"] + " " + reader["Name"]);//输出读取的内容
}
Console.WriteLine("接下来读取ContactType数据:");
if (reader.NextResult())//读取第二个结果集
{
while (reader.Read())//循环读取第二个结果集
{
Console.WriteLine(reader["ContactTypeID"] + " " + reader["Name"]);//输出第二个结果集
}
}
reader.Close();
通过SqlDataReader获取架构信息
string sql = "select * from Person.AddressType";//定义一个查询
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader = cmd.ExecuteReader();//执行SQL查询返回SqlDataReader
DataTable schemaTable = reader.GetSchemaTable();//获得返回的架构信息
foreach (DataRow row in schemaTable.Rows)//循环读取每一行
{
foreach (DataColumn column in schemaTable.Columns)//循环读取每一列
Console.WriteLine(column.ColumnName + " = " + row[column]);//输出列名和内容
Console.WriteLine();
}
reader.Close();//关闭SqlDataReader
--
--11.4.2节示例
--
通过DataReader获得一个实体实例的函数
private AddressType GetAddressTypeByReader(IDataReader reader)//传入DataReader
{
AddressType addressType = new AddressType();//申明对象
//接下来读取DataReader为对象的每个属性赋值
addressType.AddressTypeID = (int)reader["AddressTypeID"];
addressType.Name = reader["Name"].ToString();
addressType.rowguid = reader["rowguid"].ToString();
addressType.ModifiedDate = (DateTime)reader["ModifiedDate"];
return addressType;//返回对象
}
获得单个对象实例
string sql = "select * from Person.AddressType where AddressTypeID="+id;//读取一个对象
SqlCommand cmd=new SqlCommand(sql,conn);
SqlDataReader reader = cmd.ExecuteReader();//执行SQL语句返回SqlDataReader
if (reader.Read()) //判断是否返回了数据
{
AddressType addressType= GetAddressTypeByReader(reader);//前面定义的函数
reader.Close();//关闭SqlDataReader
}
获得对象实例集合
string sql = "select * from Person.AddressType";//定义SQL查询语句
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader reader = cmd.ExecuteReader();//执行SQL查询
List<AddressType> addressTypes = new List<AddressType>();//定义一个集合
while (reader.Read()) //循环读取每一行数据
{
addressTypes.Add(GetAddressTypeByReader(reader)); //将单个实例加入到集合中
}
reader.Close();