DataReader存在的意义

DataReader存在的意义

     首先说明,本人菜鸟一枚。说的不准确的话请大家见谅了。

     ado.net中的存在DataReader和DataSet对象,在平时的工作中从来没有使用过DataReader对象。前天突然想起了DataReader对象。既然ado.net中有这个对象的存在,那么这个对象一定是有意义的。可是它到底有什么意义呢?

      要知道DataReader可以实现的功能DataSet都可以实现。而且因为DataReader对象是只读的并且每次只能读取一条数据。所以我首先想到的是可以在登录的时候使用DataReader。通过输入的用户名返回符合条件的密码和输入的密码相比较,如果一致则登陆成功,如果不一致则登录失败。因为Datareader是面向数据库连接的,所以在读取大量数据的时候DataReader的效率会比非面向数据库连接的DataAdapter+DataSet要高,那么大量数据需要显示,并且这些数据不需要修改的话,使用Datareader+DataTable的效率是不是会比DataSet作为数据源效率跟高呢。因为我手头上没有大量的数据因此没有测试。不过理论上来说DataReader的效率会更高一点。下面是源码

  

namespace WindowsFormsApplication1
{

public partial class Form1 : Form
{

public Form1()
{

InitializeComponent();
DataSource();
}

 

public void DataSource()
{

string strCon = ConfigurationManager.AppSettings[“Connection2”].ToString();
string strCon2 = ConfigurationManager.ConnectionStrings[“Connection1”].ToString();
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(strCon2))
{

using (System.Data.SqlClient.SqlCommand comm = conn.CreateCommand())
{

comm.CommandText = “select * from UserMessage”;
conn.Open();
#region DataReader作为数据源
using (SqlDataReader dr = comm.ExecuteReader())
{

DataTable tb = new DataTable();
tb.Load(dr);//将DataReader绑定到DataTable
dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.DataSource = tb;
dataGridView1.Columns.Add(“ID”, “编号”);
dataGridView1.Columns.Add(“UserName”, “用户名”);
dataGridView1.Columns.Add(“PassWord”, “密码”);
dataGridView1.Columns[0].DataPropertyName = tb.Columns[0].ToString();
dataGridView1.Columns[1].DataPropertyName = tb.Columns[1].ToString();
dataGridView1.Columns[2].DataPropertyName = tb.Columns[2].ToString();
}
}
}
}

在园子里逛了快一年了这是第一次写博客。肯定写的不好,就请大家多多见谅了。

转载于:https://www.cnblogs.com/wigy/archive/2012/07/09/2582726.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110367.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 历史拉链表「建议收藏」

    历史拉链表「建议收藏」使用UDW创建历史拉链表。介绍历史拉链表历史拉链表是一种数据模型,主要针对数据仓库设计中表存储数据的方式而定义的。**它记录一个事物从开始到当前状态的所有变化的信息。**拉链表可以避免按每一天存储所有记录造成的海量存储问题,同时也是处理缓慢变化数据的一种常见方式。也就是说,对于表中的任何数据,不进行真正的删除,只记录操作和有效日期。流程其中,tmp0表有两个分区,表…

    2022年10月17日
    5
  • Java面向对象三大特性(封装、继承、多态)

    Java面向对象三大特性(封装、继承、多态)文章目录前言一、封装1.封装的概念2.private实现封装3.getter和setter方法4.封装的好处二、继承1.extends实现继承2.super关键字三,多态总结前言OOP语言:也就是面向对象编程。面向对象的语言有三大特性:封装、继承、多态。三大特性是面向对象编程的核心。下面就来介绍一下面向对象的三大特性。如果想了解面向对象可以看一下这一篇博客类和对象一、封装1.封装的概念在我们写代码的时候经常会涉及两种角色:类的实现者和类的调用者封装的本质就是让类的调用者不必太多的.

    2022年7月25日
    13
  • Lombok使用与踩坑

    Lombok使用与踩坑一 使用 Lombok1 在 pom 文件中引入依赖 dependency groupId org projectlombo groupId artifactId lombok artifactId optional true optional dependency

    2025年7月25日
    2
  • PHP的ini_set函数用法[通俗易懂]

    PHP的ini_set函数用法

    2022年2月9日
    34
  • 部署禅道至外网

    部署禅道至外网结论:采用Cpolar映射工具和netsh命令netsh命令可以将对本地/局域网的某个端口的请求转发给本地/局域网的另一端口接收处理,假设利用Cpolar映射工具将本地的12345端口映射到外网,再利用netsh命令将本地12345端口转发到192.168.10.188的8000端口,这样,我在外网用http请求本地12345端口时,实际上是在请求禅道(192.168.10.188:8000)网址结论:可行工具:cpolar内网穿透工具和一台内网开着的电

    2022年5月29日
    83
  • MySQL、MongoDB、Redis 数据库之间的区别

    MySQL、MongoDB、Redis 数据库之间的区别

    2022年2月12日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号