从数据库中读取数据:

使用DataReader对象从数据库中读取数据

首先需要添加几个命名空间

 //需要添加的命名空间
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

配置文件如下

 <configuration>
<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source=TANGPRO-PC;Initial Catalog=Northwind;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

具体实现代码

         //从配置文件中读取数据库连接信息
string conStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(conStr);//使用SqlConnection对象与数据库相连接 //Command对象使用Connection对象执行SQL查询,它返回的结果通常存储在 DataSet或DataReader中
SqlCommand myCommand = new SqlCommand();
myCommand.CommandText = "SELECT TOP 3 * FROM CUSTOMERS"; //需要执行的SQL语句
myCommand.CommandType = CommandType.Text; //CommandType.Text 表示 SQL 语句是内部文本
myCommand.Connection = conn; //SqlCommand对象的连接对象 //打开连接
myCommand.Connection.Open(); //此处存放在 DataReader中
SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); //将返回的数据绑定到 GridView控件中
GridView1.DataSource = myReader;
GridView1.DataBind(); //读取完毕后销毁连接
myCommand.Dispose();
conn.Dispose();

结果:

使用数据适配器

  • SqlDataAdaper是一个特殊的类,其作用是在断开连接的DataTable对象和物理数据源之间搭起桥梁
  • 其提供双向的传输机制,它可以在数据源上执行SELECT语句,将结果传送到DataTable对象中,还可以执行标准的INSERT,UPDATE,DELETE语句,从DataTable对象中提取输入的数据
  • SqlDataAdaper类提供了一个Fill()方法,调用Flii()方法将执行SelectCommand属性中提供的命令,获取结果集,并把它复制到DataTable对象中

实现代码:

    protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//从配置文件中读取数据库连接信息
string conStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(conStr);//使用SqlConnection对象与数据库相连接 SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.CommandText = "SELECT TOP 5 * FROM CUSTOMERS"; DataTable myTable = new DataTable(); SqlDataAdapter myAdapter = new SqlDataAdapter(); //使用前面创建的 SqlCommand 对象填充 DataAdapter对象的SelectCommand属性
myAdapter.SelectCommand = cmd; //调用Flii()方法将执行SelectCommand属性中提供的命令,获取结果集,并把它复制到DataTable对象中
myAdapter.Fill(myTable); //Fill()方法返回一个已填充的DataTable对象 GridView1.DataSource = myTable.DefaultView;
GridView1.DataBind(); myAdapter.Dispose();
cmd.Dispose();
conn.Dispose();
} }

结果

使用参数

        protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string conStr = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(conStr); SqlCommand myCommand = new SqlCommand();
myCommand.CommandType = CommandType.Text;
myCommand.Connection = conn;
myCommand.CommandText = "SELECT * FROM CUSTOMERS WHERE CITY = @CITY AND CONTACTNAME= @CONTACT"; //此处使用了参数@CITY @CONTACT //创建SqlParameter对象,使用参数有助于防止可能的 SQL 注入攻击
//一般只需要填写ParameterName 和 Value属性即可
SqlParameter cityPara = new SqlParameter();
cityPara.ParameterName = "@CITY"; //这个读写属性获取或设置参数的名称
cityPara.SqlDbType = SqlDbType.VarChar; //获取或设置参数值的SQL Server数据库类型
cityPara.Size = ; //这个读写属性获取或设置参数值的大小
cityPara.Value = "Berlin"; //参数对象提供的值,这个值在运行期间传送给命令中定义的参数 SqlParameter contactPara = new SqlParameter();
contactPara.ParameterName = "@CONTACT";
contactPara.SqlDbType = SqlDbType.VarChar;
contactPara.Size = ;
contactPara.Value = "Maria Anders"; //向SqlCommand对象中加入参数
myCommand.Parameters.Add(cityPara);
myCommand.Parameters.Add(contactPara); myCommand.Connection.Open(); SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); GridView1.DataSource = myReader;
GridView1.DataBind(); myCommand.Dispose();
conn.Dispose();
}
}

第二种加入参数的方法(更简便)

            myCommand.CommandText = "SELECT * FROM CUSTOMERS WHERE CITY = @CITY AND CONTACTNAME= @CONTACT"; //此处使用了参数@CITY @CONTACT

                 myCommand.Parameters.Add(new SqlParameter("CITY", "Berlin")); //期中CITY对应 SQL语句中的 @CITY   ,Berlin是其需要输入的值
myCommand.Parameters.Add(new SqlParameter("CONTACT", "Maria Anders"));

结果:

Ado.Net基础拾遗一:读取数据的更多相关文章

  1. Ado.Net基础拾遗二:插入,更新,删除数据

    插入数据 public void InsertDataToSQL() { string conStr = ConfigurationManager.ConnectionStrings["No ...

  2. vtk基础编程(2)-读取数据文件中的坐标点

    原文地址: http://blog.csdn.net/chinamming/article/details/16860051 1. 案例说明 在实际计算中,常常需要大量的数据, 这个时候数据文件就必不 ...

  3. .NET基础拾遗(6)ADO.NET与数据库开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  4. 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

    在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...

  5. .NET基础拾遗(8)ADO.NET与数据库开发基础

    1.1 ADO.NET支持哪几种数据源? ① System.Data.SqlClient .NET程序员最常用的了.通过OLEDB或者ODBC都可以访问,但是SqlClient下的组件直接针对MSSQ ...

  6. 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

    第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...

  7. XML基础以及用DOM4j读取数据

    都知道,HTML被设计用来显示数据,XML被设计用来保存.数据传输.而我们平时经经常使用的无非是保存数据.读取数据.所以这里主要介绍XML相关基础内容.以及用DOM4j来存取XML的数据. 以下简单介 ...

  8. 归纳从文件中读取数据的六种方法-JAVA IO基础总结第2篇

    在上一篇文章中,我为大家介绍了<5种创建文件并写入文件数据的方法>,本节我们为大家来介绍6种从文件中读取数据的方法. 另外为了方便大家理解,我为这一篇文章录制了对应的视频:总结java从文 ...

  9. Java基础知识强化之IO流笔记29:BufferedOutputStream / BufferedInputStream(字节缓冲流)之BufferedInputStream读取数据

    1. BufferedInputStream读取数据 BufferedInputStream构造方法,如下: 构造方法摘要 BufferedInputStream(InputStream in)    ...

随机推荐

  1. [BZOJ1010][HNOI2008]玩具装箱toy 解题报告

    Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...

  2. Linux 开机自动挂载windows分区

    blkid 查看 uuid如下ps:或者使用uuidgen <设备>查看具体设备的uuidreddusty@reddusty-X550JK:~$ sudo blkid[sudo] pass ...

  3. html 表格获取单行

    参考:http://www.jb51.net/article/63161.htm function cell(btn_id) { {#var x=document.getElementById('#' ...

  4. camera摄像原理之四:曝光和GAMMA【转】

    转自:http://blog.csdn.net/ghostyu/article/details/7912880 从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD 等电子感光器件)所能表 ...

  5. golang写一个简单的爬虫

    package main import( "fmt" "io/ioutil" "net/http" ) func gethtml(url s ...

  6. 使用Github官方提供的gitignore过滤Git提交的文件

    https://github.com/github/gitignore 在Gitignore项目主页找到VisualStudio.gitignore 下载后放到自己项目根目录的.vs文件夹提交就可以在 ...

  7. zabbix ZBX_NOTSUPPORTED: Timeout while executing a shell script.

    有一个监控一直都是正常的,今天突然收到报警邮件,上服务器查看服务又是正常的,但是报警邮件还是没恢复 监控端进行脚本测试,发现是正常的 到监控端使用zabbix_get -s ip -p 端口  -k ...

  8. 【 Linux 】Linux套接字简要说明

    Linux套接字    源IP地址和目的IP地址以及源端口和目标端口号的组合称为套接字.其作用于标识客户端请求的服务器和服务. 套接字,支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间 ...

  9. poj 3608(旋转卡壳求解两凸包之间的最短距离)

    Bridge Across Islands Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9768   Accepted: ...

  10. Nodejs微信开发使用wechat-api回复多条消息

    在上一往篇文章<Nodejs微信开发>中,微信后台能够正常的接收到客户端的消息,并能够简单的回复一条消息至客户端. 但我的目录是将微信与Bot Framework进行关联,那么肯定就有一些 ...