DataReader的使用方法

 C#中提供的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("登录失败!!");
           }
           myreader.Close();
           conn.Close();
           
       }

       private void button2_Click(object sender, EventArgs e)
       {
           Application.Exit();
       }
    }
}

posted @ 2008-04-03 17:45  岩仔  阅读(1024)  评论(0编辑  收藏  举报