[原]C#:读取数据DataReader

来源:互联网 发布:网页调用淘宝客户端 编辑:程序博客网 时间:2024/04/29 00:21

    DataReader对象是数据读取器对象,提供只读向前的游标。如果应用程序需要每次从数据库中取出最新的数据,或者只是需要快速读取数据,并不需要修改数据,那么就可以使用DataReader对象进行读取。对于不同的数据库连接,有不同的DataReader类型。

►在System.Data.SqlClient命名空间下时,可以调用SqlDataReader类。

►在System.Data.OleDb命名空间下时,可以调用OleDbDataReader类。

►在System.Data.Odbc命名空间下时,可以调用OdbcDataReader类。

►在System.Data.OracleClient命名空间下时,可以调用OracleDataReader类。

    在使用DataReader对象读取数据时,可以使用ExecuteReader方法,根据SQL语句的结果创建一个SqlDataReader对象。

[注]:在创建DataRelation时,它首先验证是否可以建立关系。在创建DataRelation和将其添加到DataRelationCollection(DataSet的DataRelation对象的集合)之间的这段时间,可以对父行或子行进行其他更改。

    示例,使用ExecuteReader方法创建一个读取tb_command表中所有数据的SqlDataReader对象,代码如下:

//实例化SqlConnection变量conn

SqlConnection conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=");

conn.Open();    //打开连接

//创建一个SqlCommand对象

SqlCommand cmd = new SqlCommand();

//设置Connection属性,指定其使用conn连接数据库

cmd.Connection = conn;

//设置CommandText属性,以及其执行的SQL语句

cmd.CommandText = "select* from tb_command";

//设置CommandType属性为Text,使其只执行SQL语句文本形式

cmd.CommandType = CommandType.Text;

//使用ExecuteReader方法实例化一个SqlDataReader对象

SqlDataReader sdr = cmd.ExecuteReader();

 

1、判断查询结果中是否有值

    可以通过SqlDataReader对象的HasRows属性获取一个值,该值指示SqlDataReader是否包含一行或多行,即判断查询结果中是否有值。语法如下:

public override bool HasRows{get;}

其中,如果SqlDataReader包含一行或多行,该值为true,否则为false。示例代码如下:

SqlConnection conn = new SqlConnection("server=.;database=db_15;uid=sa;pwd=");

conn.Open();

SqlCommand cmd = new SqlCommand("select* from "+textBox1.Text.Trim(), conn);

SqlDataReader sdr = cmd.ExecuteReader();

sdr.Read();

if (sdr.HasRows){

    MessageBox.Show("数据表中有值");

}

else{

    MessageBox.Show("数据表中没有任何数据");

}

 

2、读取数据

    可以通过ExecuteReader方法,根据SQL语句创建一个SqlDataReader对象后,再调用SqlDataReader对象的Read方法读取数据。Read方法使用SqlDataReader前进到下一条记录,SqlDataReader的默认位置在第一条记录前面。因此,必须调用Read方法访问数据。对于每个关联的SqlConnection,一次只能打开一个SqlDataReader,在第一个关闭之前,打开另一个的任何尝试都将失败。

 

[注]:在使用SqlDataReader对象之前,必须打开数据库连接。如果针对一个SqlConnection,创建多个SqlDataReader对象,则创建下一个SqlDataReader对象之前,要通过Close方法关闭上一个SqlDataReader对象。

 

 

0 0
原创粉丝点击