C#_ACCP_Windows_ADO.NET(三)

ADO.NET(三)     DataReader

Command 对象的 ExcuteScalar() 方法可以从数据库检索单个值 那么如何获取数据库中的多条
记录呢 使用 Command 的 ExcuteReader() 方法 可以返回一个 DataReader 对象 读取多条记录

DataReader 对象可以从数据库中检索只读 (不可以修改) 数据 每次从查询结果中读取一行

DataReader 对象的常用属性和方法
HasRows  是否有数据 返回结果 true false
FieldCount  当前行中的列数
Read()  读取下一行数据
Close() 关闭 DataReader

使用 DataReader 对象获取多行数据

SQL 建库代码

use master
go

if exists(select * from sysdatabases where name='test2')
drop database test2
go

create database test2 on primary
(
	name='test2_data',
	filename='D:\test2_data.mdf',
	size=5mb,
	maxsize=10mb,
	filegrowth=1mb
)
log on
(
	name='test2_log',
	filename='D:\test2_log.ldf',
	size=5mb,
	maxsize=10mb,
	filegrowth=1mb
)
go

use test2
go

if exists(select * from sysobjects where name='Students')
drop table Students
go

create table Students
(
	id int IDENTITY primary key not null,
	name varchar(20) null,
	age int null
)
go

insert into Students (name,age) values ('张三',25)
insert into Students (name,age) values ('李四',26)
go

C#代码

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

namespace ADODataReader2
{
    class Program
    {
        static void Main(string[] args)
        {
            //数据库连接字符串
            string conStr = "Data Source=.;Initial Catalog=test2;User ID=sa;Pwd=leeho";
            //创建数据库连接对象
            SqlConnection conn = new SqlConnection(conStr);
            //定义SQL查询语句
            string sqlStr = "select * from Students";
            //创建Command对象
            SqlCommand comm = new SqlCommand(sqlStr, conn);
            //创建DataReader对象
            SqlDataReader dataReader = null;
            try
            {
                //打开数据库连接对象
                conn.Open();
                //执行Command的ExecuteReader()方法 返回DataReader对象
                dataReader = comm.ExecuteReader();
                //如果没有读到数据
                if (!dataReader.HasRows)
                {
                    Console.WriteLine("没有数据!");
                }
                else
                {
                    //循环读取下一行记录
                    while (dataReader.Read())
                    {
                        //ID列的值
                        int id = (int)dataReader["id"];
                        Console.WriteLine(id);
                        //Name列的值
                        string name = (string)dataReader["name"];
                        Console.WriteLine(name);
                        //Age列的值
                        int age = (int)dataReader["age"];
                        Console.WriteLine(age);
                        Console.WriteLine();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
            }
            finally
            {
                //关闭DataReader对象
                dataReader.Close();
                //关闭数据库
                conn.Close();
            }
            Console.ReadKey();
        }
    }
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值