首页 > 代码库 > ADO.NET之8-数据读取器,DataReader---ShinePans

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 student_name=@name", sc);  //创建SqlCommand对象
                cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = http://www.mamicode.com/"潘";>
运行结果: