datareader是以只进的形式读取数据的,一次只读一条

DataReader 常用属性

FieldCount   获取字段数目

IsClosed   取得状态True or Fals

Item({name,ordinal})  获取或设置字段内容,name为字段名,ordinal为字段序号,可选用

RecordsAffected   获取执行insert delete 或update后有多少行受到影响

DataReader 常用方法

CLose() 关闭

GetBoolean(ordinal) 取得第 ordinal+1列的内容,返回值为boolean类型,还有GetByte(ordinal),GetDecimal(ordinal).....

GetDataTypeName(ordinal) 取得第ordinal+1列的源数据类型名称

GetFileType(ordinal) 取得第ordinal+1列的数据类型

GetName(ordinal) 取得ordinal+1列的字段名称

GetOrdinal(name) 取得字段名称为name的字段列号

GetValue(ordinal) 取得ordinal+1列的内容

GetValues(values) 取得所有字段内容,并将内容放在values数组中,数组大小与字段数目相等,些方式比GetValue()更有效率

IsDBNull(orderinal) 判断第ordinal+1列是否为Null ,返回Boolean

Read() 读取下一条数据,如果没有了,将返回False,默认情况下,指针是在第一条记录的上方

用例:(简单的登陆界面)

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.OleDb;

using System.Drawing;

using System.Text;

using System.Windows.Forms;



namespace WindowsApplication4

{

    publicpartial class Form1 : Form

    {

       public Form1()

       {

           InitializeComponent();

       }

       

       //定义链接

       OleDbConnection conn;

       //定义命令

       OleDbCommand cmd;

       //定义datareader

       OleDbDataReader myreader;

       //定义两个变量用来存储数据库链接字符串和命令字符串

       string connstr, selectcmd;

       private void button1_Click(object sender, EventArgs e)

       {

           connstr = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=db.mdb";

           selectcmd = "select * from yonghu where username='" + textBox1.Text+ "' and password='" + textBox2.Text + "'";

           //实例化链接并打开

           conn = new OleDbConnection(connstr);

           conn.Open();

           //实例化cmd并制定执行语句与执行链接

           cmd = new OleDbCommand(selectcmd, conn);

           //执行查询命令并赋给datareader

           myreader = cmd.ExecuteReader();

           /*判断myreader中是否真的读取到了数据,也就是说查询命令是否有结果

           datareader的read方法可以将数据指针移动到下一条记录上,因为datareader的数据指针刚开始位于

           第一条的上方,因此第一次调用read方法的时候实际上指针指向第一条记录*/

           if (myreader.Read())

           {

               //myreader中有数据,表示给出的用户名和密码在数据库中有匹配记录

               MessageBox.Show("登录成功");

               //如果登录成功则取出用户名和等级填入下面的文本框中

               textBox3.Text = myreader["username"].ToString();

               textBox4.Text = myreader["level"].ToString();

           }

           else

           {

               //myreader中没有数据,表示给出的用户名和密码至少有一个是错的

               MessageBox.Show("登录失败!!");

           }

//每次使用完 DataReader 对象后都应调用 Close 方法。

如果 Command 包含输出参数或返回值,那么在 DataReader 关闭之前,将无法访问这些输出参数或返回值。

请注意,当 DataReader 打开时,该 DataReader 将以独占方式使用 Connection 在原始 DataReader 关闭之前,将无法对 Connection 执行任何命令(包括创建另一个 DataReader)。

           myreader.Close();

           conn.Close();

           

       }



       private void button2_Click(object sender, EventArgs e)

       {

           Application.Exit();

       }

    }

}

你可能感兴趣的:(reader)