ADO.NET之8-数据读取器,DataReader---ShinePans

根据数据提供程序不同,DataReader可分为SqlDataReader,OleDbDataReader,OlbeDataReader和OracleDataReader等4大类

一个巧妙的比喻:如果数据库是水库,那么SqlConnection是进水笼头,SqlCommand是抽水机,SqlDataReader是出水的水管,SqlDataReader每次只能读取一条记录,每当SqlDataReader调用Read方法就会从数据库得到一条记录,同时Read方法会返回False值,可以使用Wihle循环来调用SqlDataReader的Read方法,读取数据库中的记录,SqlDataReader的工作方式意味着,在读取数据库的时候要保持与数据库的连接,如果此时断开连接,数据会读取失败.

对于SqlCommand对象调用ExecuteScalar方法来查询表中记录的数量,SqlCommand对象调用ExecuteDataReader方法,查询表中所有的记录

源代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SQLTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ///连接数据库
            string connection =
                "server=潘尚\\SQLEXPRESS;database=db_test;Trusted_Connection=true";
            SqlConnection sc = new SqlConnection(connection);
        //    sc.ConnectionString = connection;
            try
            {
                sc.Open();  //打开数据库连接
                Console.WriteLine("已经打开数据库连接!");
                SqlCommand cmd = new SqlCommand("SELECT * FROM db_student", sc);
                SqlDataReader sdr = cmd.ExecuteReader(); //执行查找记录命令
                while(sdr.Read())
                {
                    Console.WriteLine("{0}{1}{2}{3}", sdr[0], sdr[1], sdr[2], sdr[3]);
                }
//START:4.查询数据库记录//////////////////////////////////////////////////////////////
              /*  SqlCommand cmd = new SqlCommand("SELECT count(*) FROM db_student", sc);
                int i = (int)cmd.ExecuteScalar();//执行查找记录的命令
                Console.WriteLine("表中共有{0}条数据", i.ToString());  */
//END:4.查询数据库记录////////////////////////////////////////////////////////////////
//START:3.修改数据库数据的代码////////////////////////////////////////////////////////
             /*   SqlCommand cmd = new SqlCommand("UPDATE db_student SET student_grade=99 where [email protected]", sc);  //创建SqlCommand对象
                cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "潘";
                int i = cmd.ExecuteNonQuery();
                if (i > 0) Console.WriteLine("修改成功!");   */
//END:3.修改数据库数据的代码/////////////////////////////////////////////////////////
//START:1.删除数据库记录代码段///////////////////////////////////////////////////////
               /* string cmdtext = "DELETE FROM db_student WHERE [email protected]";
                SqlCommand cmd = new SqlCommand(cmdtext, sc);
                cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "潘";
                int i = cmd.ExecuteNonQuery();
                if (i > 0) Console.WriteLine("删除记录成功!"); */
//END:1.删除数据库记录代码段/////////////////////////////////////////////////////////
//START:2.添加记录的代码///////////////////////////////////////////////////////////////
             /*   SqlCommand cmd = new SqlCommand();//创建SqlCommand对象
                cmd.CommandType = CommandType.Text; //设置执行文本命令
                cmd.Connection = sc; //设置对象属性
                cmd.CommandText =
                    "INSERT INTO db_student(student_name,student_age,student_address,student_grade)VALUES(@name,@age,@address,@grade)";
                //添加参数并为参数赋值
                cmd.Parameters.Add("@name", SqlDbType.VarChar, 10).Value = "潘";
                cmd.Parameters.Add("@age", SqlDbType.Int).Value = 19;
                cmd.Parameters.Add("@address", SqlDbType.VarChar).Value = "武汉";
                cmd.Parameters.Add("@grade", SqlDbType.Int).Value = 100;
                int i = cmd.ExecuteNonQuery(); //执行数据库添加记录命令
                if (i > 0) Console.WriteLine("添加记录成功"); */  //控制台输出添加记录
//END:2.添加记录的代码/////////////////////////////////////////////////////////////////
            }
            catch (Exception ex)
            {
                Console.WriteLine("打开数据库错误:{0}", ex.Message);
            }
            finally
            {
                sc.Close();
                Console.WriteLine("数据库连接已关闭!");
            }
            System.Console.ReadLine();
        }
    }
}

运行结果:

ADO.NET之8-数据读取器,DataReader---ShinePans

时间: 2024-10-05 20:50:33

ADO.NET之8-数据读取器,DataReader---ShinePans的相关文章

Extjs的数据读取器store和后台返回类型简单解析

工作中用到了Extjs,从后台获取数据的时候,用到了extjs自己的Ext.data.store方法,然后封装了ExtGridReturn方法, 目的:前台用到Ext.data.store读取从后台传过来的数据,后台封装成ExtGridReturn类型 前台如下: this.store = new Ext.data.Store({            remoteSort:true,            baseParams:{                start:0,        

EF调用存储过程查询表中的部分字段,报数据读取器与指定的“AdventureWorksDWModel.Student”不兼容。某个类型为“Age”的成员在同名的数据读取器中没有对应的列。

实现功能:查询单张表Student中返回指定的列 一:数据库表结构: 二:存储过程: 1 USE [AdventureWorksDW] 2 GO 3 /****** Object: StoredProcedure [dbo].[GetAllStudentInfo] Script Date: 2014/11/18 21:47:36 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 -- ==============

Tips:配置SCOM报表数据读取器账户报错

安装SCOM 2012 R2报表服务器角色的时候,在配置operations manager账户界面提示错误"无法验证提供的一个或多个账户.请提供有效的用户名和密码". 经过检查: 1)scomadmin账户已经加入到了本地管理员组: 2)scomadmin账户已经加入到了SQL server的sysadmin组: 3)scomadmin账户未过期.密码可以登录: 错误原因: 本地系统时间比正常的时间慢了十几个小时,调整时间和日期之后,恢复正常.

C#与数据库访问技术总结(十一)之数据阅读器(DataReader)1

数据阅读器 当执行返回结果集的命令时,需要一个方法从结果集中提取数据. 处理结果集的方法有两个: 第一,使用数据阅读器(DataReader): 第二,同时使用数据适配器(Data Adapter)和ADO.NET数据集(DataSet). 本节将学习数据阅读器的有关知识. DataReader类 在ADO.NET中由每个数据提供程序实现自己的DataReader. 数据读取器(DataReader)是从一个数据源中选择某些数据的最简单的方法,但也是功能较弱的一个方法. DataReader类没

DataReader对象(数据读取)

DataReader对象提供了一个只进只读的数据读取器,用于从查询结果中读取数据,它每次仅能读取一行数据. [常用属性]: FieldCount:获取当前行的列数: HasRows:表明查询结果中是否还存在未被读取的数据. [常用方法]: Close:关闭SqlDataReader对象: GetName:获取指定列的名称; Read:使SqlDataReader前进到下一条记录. [使用DataReader对象对数据库进行查询操作步骤]: 1.创建Connection对象: 2.打开数据库连接:

C#与数据库访问技术总结(十二)数据阅读器(DataReader)2

遍历数据阅读器中的记录 当ExecuteReader方法返回DataReader对象时,当前光标的位置在第一条记录的前面. 必须调用阅读器的Read方法把光标移动到第一条记录,然后,第一条记录将变成当前记录. 如果数据阅读器所包含的记录不止一条,Read方法就返回一个Boolean值true. 想要移到下一条记录,需要再次调用Read方法.重复上述过程,直到最后一条记录,那时Read方法将返回false. 经常使用while循环来遍历记录: while(reader.Read()) { //读取

ADO.NET——使用Connection连接数据库,使用DataReader访问数据库并返回多行数据

使用Connection连接数据库,使用DataReader访问数据库,并返回多行数据. 相关步骤: 需要引入两个命名空间 using System.Data; using System.Data.SqlClient; 使用DataReader访问数据库的步骤 创建SqlConnection对象,指定连接字符串 创建SqlCommand对象,指定与之相关的连接对象,以及数据库操作命令文本(CommandText) 打开连接 调用SqlCommand对象的ExecuteReader()方法,返回S

ADO.NET程序访问数据的组件

组成--数据集(内存中的数据库) --DataSet数据集 --DataTable数据表 --DataColumn数据列 --DataRow数据行 --DataView数据视图--NET数据提供程序 --Connection连接(程序和数据库之间的桥梁) --Open/Close --ConnectionString:连接字符串(目标数据库的信息) --服务器:server / data source --用户名:uid / user id --密码:pwd / password --数据库:d

caffe代码阅读8: Data_layers的实现细节(各个数据读取层的实现细节) 2016.3.25-28

一.Data_layers.hpp文件的作用简介 Data_layers.hpp在目前caffe的master分支中已经不能存在了,分散到各个文件中去了. 而之前是存在于cafferoot\include\caffe中.现在已经变成了各个类的名称的头文件了.这里做个提醒 首先给出这个文件中所包含的几个与数据读取有关的类. 分别为: BaseDataLayer 数据层的基类,继承自通用的类Layer Batch Batch实际上就是一个data_和label_类标 BasePrefetchingD