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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 群晖nas 文件服务器,群晖nas挂到云服务器上

    群晖nas 文件服务器,群晖nas挂到云服务器上群晖nas挂到云服务器上内容精选换一换在公有云上部署SAPHANA所需要的云服务如下。无法直接从云备份控制台查看备份中的数据,您可以通过以下几种方式进行查看:云服务器备份使用云服务器备份创建镜像后,再使用镜像创建云服务器。登录云服务器,查看服务器中的数据。云硬盘备份使用云硬盘备份创建新的云硬盘后,将云硬盘挂载至云服务器上。登录云服务器,查看磁盘中的数据。SFSTurbo备份使用SFSTur…

    2022年6月26日
    43
  • java中Scanner类nextLine()和next()的区别和使用方法

    java中Scanner类nextLine()和next()的区别和使用方法在实现字符窗口的输入时,扫描器Scanner非常实用,操作起来也比较简单。在今天编程的过程中,我发现用Scanner实现字符串的输入有两种方法,一种是next(),一种nextLine(),但是这两种方法究竟有什么区别呢?我查了一些资料总结了一下,希望对大家有所帮助。           在实现字符窗口的输入时,扫描器Scanner非常实用,操作起来也比较简单。

    2022年6月12日
    33
  • 程序员star法则简历_程序员的标配

    程序员star法则简历_程序员的标配hhh程序员的表达能力一直被诟病,尤其面试讲述自己的项目的时候下面的star原则能够帮助你:所谓STAR原则,即Situation(情景)、Task(任务)、Action(行动)和Result(结果)四个英文单词的首字母组合。STAR原则是结构化面试当中非常重要的一个理论。S指的是situation,中文含义是情景,也就是在面谈中我们要求应聘者描述他在所从事岗位期间曾经做过的某件重要的且可以当作

    2025年11月10日
    4
  • pytorch loss反向传播出错

    pytorch loss反向传播出错在使用pytorch进行训练代码时,在运行loss.backward()误差反向传播时出错:RuntimeError:gradcanbeimplicitlycreatedonlyforscalaroutputsFile”train.py”,line143,intrainloss.backward()File”/usr/local/lib/python3.6/dist-packages/torch/tensor.py”,line198…

    2022年5月20日
    36
  • 解决: java.net.ConnectException: Connection refused: connect

    解决: java.net.ConnectException: Connection refused: connectjava.net.ConnectException:Connectionrefused:connect1.报错如上。2.原因和解决:1)端口号被占用:杀死占用端口号(一般为8080)的进程,释放端口;彻底关闭Tomcat服务器,或者重新启动项目。2)使用以下命令检查服务器中允许的最大进程数:ulimit-u。如果将此值设置为较低值,例如1024,则使用以下…

    2022年4月30日
    42
  • 网络协议之LLDP

    网络协议之LLDP一、协议简介为什么会出现LLDP?随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复杂,来自不同设备厂商的设备也往往会增加自己特有的功能,这就导致在一个网络中往往会有很多具有不同特性的、来自不同厂商的设备,为了方便对这样的网络进行管理,就需要使得不同厂商的设备能够在网络中相互发现并交互各自的系统及配置信息。LLDP(LinkLayerDiscoveryProtocol,链路层发…

    2022年5月30日
    144

发表回复

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

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