1 【ADO.NET】
      ado.net 是一种数据访问技术,使得应用程序能够连接到数据存储,并以各种方式操作存储在里面的数据。
    2 【ADO.NET五大常用对象】
     Connection(连接数据库)
     Command (执行T-SQL语句)
     DataAdapter (用户填充DataSet,断开模式)
     DataReader(读取数据库,一种只读模式,只向前的)
     DataSet(数据集,好比电脑的内存)

3 Connection和Command对象
     Connection对象也称为数据库连接对象,负责对数据源的连接。所有Connection对象的基类都是DbConnection。Connection对象有两个重要属性。
     ConnectionSting,表示用于打开SQL Server数据库的字符串;
     State,表示当前的Connection的连接状态Open()或者Close();
      可以通过配置一个数据控件得到连接数据库的连接字符串
Data Source=.;Initial Catalog=Xk;Persist Security Info=True;User ID=sa;Password=sa;
 
SqlConnection conn = new SqlConnection("连接字符串");
conn.Open();
 
   Command对象也称之为数据命令对象,主要执行增删查改数据的操作命令,也可以用于执行存储过程。Command对象的三个主要方法。
     public override int ExecuteNonQuery(),执行一个SQL语句,返回受影响的行数。这个方法主要用来执行增加,更新和删除操作。
     public SqlDataReader ExecuteReader(),执行一个查询的SQL语句,返回一个DataReader对象。
     public override Object ExecuteScalar(),从数据库中检索单个值,这个方法主要用于统计操作。
 
4 DataReader对象
    DataReader是一个读取行的只读流的方式,绑定数据时比使用数据集方式性能更高,因为它是只读的,如果要对数据库中数据进行修改就要借助其他方法将所做更改保存到数据库中。
    DataReader不能直接实例化,只能是通过相关的Command对象来创建实例,比如上面的用SqlCommand对象的实例的SqlDataReader来创建SqlDataReader对象实例。
   DataReader对象读取数据时要与数据库保持连接,读取完后,通过Close()关闭。
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
CommandBehavior.CloseConnection 在关闭Reader的同时关闭connection。​

5 DataAdapter对象
     DataAdapter也被称之为数据适配器对象,DataAdapter利用Connection对象连接的数据源,使用数据库命令对象Command规定的操作从数据源中检索出数据送入数据集对象DataSet,或者将数据集中经过编辑后的数据送回数据源。
    DataAdapter将数据填充到数据集时调用的方法是Fill()方法。语法如下:
   dataAdapter.Fill(dataTable);   //填充数据表
   dataAdapter.Fill(dataSet,"Student"); //填充数据集中Student表
 
6 DataSet对象
      DataSet对象称为数据集对象,用于表示那些存储在内存中的一个数据库,它相当于内存中的一个数据库,至少包括多个DataTable对象和DataView对象。由于DataSet提供了一个离线的数据源,这样就减轻了数据库和网络的负担,在设计程序时可以将DataSet作为程序的数据源。
 
7 DataTable对象
      DataTable对象时ADO.NET的核心对象,和普通数据库中的表一样主要包括行和列。数据行DataRow,数据列DataColumn。

一个将学生表绑定到Repeater控件的Demo,代码如下:

数据库连接配置在web.config中配置

<connectionStrings>

<add name="testConnection" connectionString="Data Source=.;Initial Catalog=Xk;Persist Security Info=True;User ID=sa;Password=sa"/>

</connectionStrings>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="connection.aspx.cs" Inherits="connection" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>例1,我们将通过connection和command对象讲数据绑定到Repeater控件上</p>
</div>
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="1" width="80%" align="center">
<tr>
<td>学号</td>
<td>班级号</td>
<td>姓名</td>
<td>密码</td>
</tr>
</HeaderTemplate> <ItemTemplate>
<tr><td><%#Eval("StuNo")%></td>
<td><%#Eval("ClassNo")%></td>
<td><%#Eval("StuName")%></td>
<td><%#Eval("Pwd")%></td></tr>
</ItemTemplate> <FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>

后台代码:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; public partial class connection : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//GetDataReader();
GetDataAapter();
} //通过DataReader来获取数据
private void GetDataReader()
{ SqlConnection conn = Conn();
string sql = "select top 10 * from Student";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open(); //得到一个Reader实例,使用CommandBehavior这个参数以便在关闭Reader的同时关闭Connection
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); // while (reader.Read())
// {
// Response.Write(reader.GetString(0) + " " + reader.GetString(1) + " " + reader.GetString(2) + " " + reader.GetString(3)+"<br/>");
// }
//
Repeater1.DataSource = reader;
Repeater1.DataBind(); reader.Close();
} //通过DataAdapter检索数据送往数据集对象
private void GetDataAapter()
{
SqlConnection conn = Conn();
string sql = "select top 10 * from Student";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
// SqlDataAdapter adapter = new SqlDataAdapter(sql,conn); 这样写和上面是等效的
DataTable dt = new DataTable(); //将检索的数据送到数据集对象中
//adapter.Fill(dt);
//Repeater1.DataSource = dt;
//Repeater1.DataBind(); //这一种的话 就是先填充到数据集DataSet的某张表中,然后从表中读取数据,相比下直接填充到DataTable更加
DataSet ds = new DataSet();
adapter.Fill(ds, "test");
dt = ds.Tables["test"];
Repeater1.DataSource = dt;
Repeater1.DataBind();
} private SqlConnection Conn()
{
//读取web.config数据库连接配置对象
string ConnStr = ConfigurationManager.ConnectionStrings["testConnection"].ConnectionString; //实例化SqlConnection对象
SqlConnection con = new SqlConnection(ConnStr); return con;
}
}

【小结】

之前学习用到的数据库操作基本都是用SQLHelper.cs这个类中的方法来实现简单的增查改,具体怎么实现的一知半解,只知道一个DataTable,至于几次笔试ADO.NET 五大对象都不知道,真是丢人。

上述笔记总结均来自于《ASP.NET夜话》这本书。

1 SqlConnection 是用来建立连接的

2 SqlCommand  是用来执行操作指令的

3 DataReader读取行只读流形式读取数据库数据,读取数据过程要与数据库保持连接

4 DataAdapter,适配器,利用Command对象的规定操作检索数据送往数据集对象

5 DataSet和DataTable,它们都是数据容器用来存放数据的,DataSet可以看成是内存中的一个数据库,而DataTable是内存中的一张数据表,数据库中可以有多张数据表。

数据库学习之ADO.NET五大对象的更多相关文章

  1. ADO.NET五大对象理论和实践(草稿)

    一.ADO.NET五大对象理论 1. Connection:与数据源建立连接. 2. Command:对数据源执行SQL命令并返回结果. Command对象在执行的的时候有几个比较重要的方法,如Exe ...

  2. ado.net五大对象

    五大对象分别是: 1. Connection:与数据源建立连接. 2. Command:对数据源执行SQL命令并返回结果. 3. DataReader:读取数据源的数据,只允许对将数据源以只读.顺向的 ...

  3. ADO.NET五大对象详解

    Connection 连接对象 用于对数据库的连接操作.传入的参数为连接字符串. Commamd 命令对象 用于执行对数据库的操作 ,传入的参数可以为连接字符串或存储过程,也必须传入连接对象的实例. ...

  4. ADO.NET五大对象增删改查使用

    string ConnStr = "Data Source=.;Initial Catalog=ADO_DEMO;Integrated Security=True"; #regio ...

  5. 吴裕雄--天生自然ORACLE数据库学习笔记:其它数据对象

    create index emp_deptno_index on emp(deptno) pctfree tablespace users; create bitmap index emp_salar ...

  6. 吴裕雄--天生自然ORACLE数据库学习笔记:数据表对象

    create table students( stuno ) not null, --学号 stuname ), --姓名 sex ), --性别 age int, --年龄 departno ) n ...

  7. ADO五大对象

     ADO.NET五大对象, 1. Connection:与数据源建立连接. 2. Command:对数据源执行SQL命令并返回结果. 3. DataReader:读取数据源的数据,只允许对将数据源以只 ...

  8. ADO五大对象(转载)

    来源:http://blog.csdn.net/u013201439/article/details/51111969 ADO五大对象(转载) 一.绪论 1.引言 在数据库应用系统中,必定要涉及到对数 ...

  9. ADO.NET的五大对象

    ADO.NET是一种数据访问技术,使得应用程序可以连接到数据库存储,并以各种方式操作存储在其中的数据.该技术基于.NETFramework,与.NET Framework类库的其余部分高度集成. 其中 ...

随机推荐

  1. qemu-kvm-1.1.0源代码中关于迁移的代码分析

    这篇文档基于qemu-kvm-1.1.0源代码进行分析. 首先,源代码中的hmp-commands.hx文件里有下面内容: { .name = "migrate",/* 在moni ...

  2. C#基于委托的带参数的消息传递设计

    需求场景 在对象A中注册消息,指定回调函数 在对象B中解释消息,调用对应的回调函数,附上对应的参数对象 定义 public delegate void MessengerDelegate(object ...

  3. .net程序员转战android第三篇---登录模块之静态登录

    这一篇我将分2个部分记录登录界面,第一部分是静态登录, 这部分将如何从界面布局.控件使用.文件关系.数据验证.登陆实现等5小块记录. 第二部分是动态登录,这块会基于上面的4小块,在数据验证不是静态数据 ...

  4. 网页body中background在ie中显示不出来

    网页body中background在ie中显示不出来 | 浏览:349 | 更新:2014-03-11 14:03 刚才上班在公司网站上写一个页面,在谷歌浏览器,火狐浏览器里调试完后,一切正常,忽然想 ...

  5. jquery easyui datagrid 分页 详解

    前些天用jquery easyui的table easyui-datagrid做分页显示的时候,折腾了很久,后来终于解决了.其实不难,最主要我不是很熟悉前端的东西. table easyui-data ...

  6. Mysql MEMORY 引擎

    CREATE TABLE `m` ( `) unsigned NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `ctime` ) NOT NULL, `ltim ...

  7. string下的 maketrans和translate

    在玩python challenge的时候发现一个比较有趣的函数所以记下来. 问题是这样的 g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amkn ...

  8. mysqlbackup 备份失败的分析

    现象: 1.从mysqlbackup 的日志上来看是它一直处于state: Waiting for locks; 2.从mysql 层面show processlist 上看它的处于waiting f ...

  9. 十、装饰(Decorator)模式 --结构模式(Structural Pattern)

    装饰(Decorator)模式又名包装(Wrapper)模式[GOF95].装饰模式以对客户端透明的方 式扩展对象的功能,是继承关系的一个替代方案. 装饰模式类图: 类图说明: 抽象构件(Compon ...

  10. 创业不要在IT业内创(市场太小,而且都喜欢自己折腾、没有花钱的习惯)

    精神是好的.但是,我看了你的产品和网站:你选的创业方向基本是死路一条,我劝你该放弃就放弃.我判断你的思路还局限在IT行业内,创业不要在IT业内创,要走出去,睁开眼看看别人的世界,自己体会.我不是打击你 ...