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();
       }
    }
}
时间: 2024-08-09 08:44:04

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

asp 从第几条开始读取数据 asp跳过前几条读取数据

asp 从第几条开始读取数据 asp跳过前几条读取数据 <% set rs=server.CreateObject("adodb.recordset") sql="select top 15 * from jsyllh_xxnews where SMT_key=1 and SMT_newssort=41 order by SMT_id desc " rs.open sql,conn,1,1 if rs.eof then  response.write &quo

C#之读取数据:DataReader对象

上一篇涉及到Command对象的ExecuteReader()方法返回一个DataReader对象,那么我们就来详细的介绍这个DataReade对象. 下面的例子使用的数据表依然与上篇的相同为CustomerManagement数据库中的manager数据表: DataReader对象概述 DataReader对象提供了顺序的,只读的方式读取Command对象获得的数据结果集.正是因为DataReader是以顺序的方式连续地读取数据,所以DataReader会以独占的方式打开数据库连接. 由于D

利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据

登录界面 <body><form action="login1.php" method="post"><div>用户名:<input type="text" name="uid" /></div><br /><div>密码:<input type="password" name="pwd" />

使用DataReader读取数据

List<User> allUsers = new List<User>(); SqlConnection conn = new SqlConnection(连接字符串); SqlCommand cmd = new SqlCommand("SELECT语句",conn); conn.Open(); using(SqlDataReader rdr = cmd.ExecuteReader()){ while(rdr.Read()) { User u = new Us

Node以数据块的形式读取文件

在Node中,http响应头信息中Transfer-Encoding默认是chunked. Transfer-Encoding:chunked Node天生的异步机制,让响应可以逐步产生. 这种发送数据块的方式在涉及到io操作的情况下非常高效.Node允许以数据块的形式往响应中写数据,也允许以数据块的形式读取文件. 这样可以有高效的内存分配,不需要把文件全部读取到内存中再全部响应给客户,在处理大量请求时可以节省内存. var http = require('http'); var fs = re

unity从表格读取数据存进字典

using System;using UnityEngine;using System.Collections;using System.Collections.Generic; public class MessageText{ private static MessageText instance; /// <summary> /// 单利模式 /// </summary> /// <returns></returns> public static Me

第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform)让用户方便的操作数据库中的数据. 什么是ADO.NET 是一组库类,System.Data. Ado.net组成 Connection:用来连接数据库 Command:用来执行SQL语句 DataReader:只读.只进的结果集,一条一条读取数据(SteamReader.XmlReader) Da

TensorFlow学习笔记(6)读取数据

Overview    之前几次推送的全部例程,使用的都是tensorflow预处理过的数据集,直接载入即可.例如: 然而实际中我们使用的通常不会是这种超级经典的数据集,如果我们有一组图像存储在磁盘上面,如何以mini-batch的形式把它们读取进来然后高效的送进网络训练?这次推送我们首先用tensorflow最底层的API处理这个问题,后面推送介绍高层API.高层API是对底层的进一步封装,用户可以不必关心过多细节.不过了解一下比较底层的API还是有好处的.当你有一组自己的数据的时候,你需要经

TensorFlow高效读取数据的方法——TFRecord的学习

关于TensorFlow读取数据,官网给出了三种方法: 供给数据(Feeding):在TensorFlow程序运行的每一步,让python代码来供给数据. 从文件读取数据:在TensorFlow图的起始,让一个输入管线从文件中读取数据. 预加载数据:在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况). 对于数据量较小而言,可能一般选择直接将数据加载进内存,然后再分batch输入网络进行训练(tip:使用这种方法时,结合yeild 使用更为简洁).但是如果数据量较