ADO.NET (ActiveX Data Objects)五大对象

1.什么是ADO.NET

     一组类库,.NET 环境下通过程序来访问数据库。就是一个访问数据库的接口。

草图如下:就是一个接口,连接应用程序与数据库,也可以封装Sqlcommand命令,返回查询结果。

2.为什么学习ADO.NET ?

     用户不需要去学习sql,只需要搭建一个web 或者winform 界面操作数据库数据。

3.ADO.NET 的组成:

Connection用来连接数据库
Command用来执行SQL语句
DataReader只读,只进的结果集,一条条的读取数据
DataAdapter是一个对象,封装了上面三个对象
DataSet数据集,临时数据库,断开数据操作

具体详解:

Connection(连接)

       主要用来开启程序和数据库之间的连接,没有利用Connection对象连接数据库,是无法从数据库中取得数据的。Close()和Dispose()的区别就是Close以后还可以Open,但是Dispose是释放了连接,要操作数据库就要重新连接数据库。

SqlConnection连接池:通过连接字符串配置连接池

Command(命令)

      主要用来对数据库发出一些指令,例如可以对数据库发出增删改查的指令,或者调用存在数据库中的存储过程等。这个对象是建立在Connection对象之上的,也就是Command对象需要连接到数据库之后才可以操作数据库中的数据。

      常见的命令: 详解请看下面的SqlHelper的封装。      

ExcuteNonQuery();//返回受影响的行数

ExcuteScalar();//返回第一行第一列

ExcuteReader();//Reader指针,指向表的标头,读取数据过程总不允许SqlConnection断开

DataAdapter(数据访问适配器)

适配器:把不符合的东西,通过适配器变成自己想要的符合的东西。

DataAdapter适配了数据库和应用程序之间的隔阂。

 数据表→适配器(SqlDataAdapter)→Dataset、DataTable

      主要是在数据源以及DataSet之间执行数据库传输工作,它可以透过Command对象下达命令后,然后将取得的数据通过DataAdapter对象调用Fill()方法填充到DataSet对象中

 Fill()方法填充主要来做什么?

1.判断SqlConnection是否初始化,如果没有,自动打开链接。

2.初始化一个Select,创建一个SQLCommand对象。

3.通过cmd对象执行 语句,返回一个SQLDataReader对象。

4.读取数据库中的数据,一行一行的填充到DataTable中。

      一次性将数据表中的数据加载到DataSet和DataTable内存里面,然后关闭数据库连接就可以了。就像一座桥梁,一头连起一个DataSet或者DataTable,在把数据库中的数据填充到DataSet或DataTable后就可以“过河拆桥”,不用再连接到数据库,而可以直接从DataSet或DataTable中获取数据。

DataSet(数据集)

       可以看做为一个对象暂存区(Cache),把从数据库中所查询到的数据保留起来,相当于一个离线数据集,甚至可以将整个数据库显示出来,DataSet是放在内存中的可以有多个DataTable,每一个DataTable下面还存在列,Dataset还可以透过DataAdapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet对象可以说是ADO.Net中重量级的对象,这个对象架构在DataAdapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataAdapter对象当作DataSet对象以及数据源间传输数据的桥梁。DataSet包含若干DataTable、DataTable包含若干DataRow。

DataReader(数据读取)

    reader是一个指针,指针指向数据库中的数据,调用一次Read()方法它就向前到下一条记录,一个DataReader必须单独占用一个打开的数据库连接!。数据都在数据表中,用到哪个数据取哪个数据,所以需要时刻与数据库保持连接。

       当我们只需要循序的读取数据而不需要其他操作时,可以使用DataReader对象。DataReader对象只是一次一次向下循序读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许其他的操作。因为DataReader在读取数据的时候限制了每次只读取一行,而且只能只读,所以使用起来不但节省资源而且效率很高。使用DataReader对象除了效率较好之外,因为不用把数据全部传回,故可以降低网路的负载

DataReader与DataAdapter的区别:

总结:

       ADO.NET 使用Connection 对象来连接数据库,使用Command 或DataAdapter 对象来执行SQL 语句,并将执行的结果返回给DataReader 或DataAdapter ,然后再使用取得的DataReader 或DataAdapter 对象操作数据结果。

 

4.ADO.NET 实现数据库的连接,并进行增删改查,这里简单介绍,具体请查看(SQLHelper封装

连接数据库需要以下几个步骤

第一步:创建连接的字符串,大致分为三部分

//创建连接字符串
Data Source=服务器名称;             
Initial Catalog=数据库名称;
Integrated Security=TRUe;//是Windows验证登陆

代码展示:不建议使用第三种,太老土

//集成连接,也就是Windows 验证登陆
string constr = "Data Source=DESKTOP-H833KAB;Initial Catalog=itcast;Integrated Security=True";
//服务器验证登陆
string constr = "Data Source=DESKTOP-H833KAB;Initial Catalog=itcast;uid=sa;password=123456";
//服务器验证登陆,不建议这种方式创建字符串,太老了
string constr = "server=.;database=itcast;uid=sa;password=123456";

第二步:创建连接对象

第三步:编写SQL语句

第四步:创建SQLCommand对象

第五步:前面的各种创建完成以后,开始连接数据库(数据库最晚打开,最早关闭,这样节省资源)

第六步:执行SQL语句

//创建连接对象   2 
using (SqlConnection con = new SqlConnection(constr))
{   //编写SQL语句  3
   string sql = "select count(*) from T_user";
   //创建SQLCommand对象 4
   using (SqlCommand cmd = new SqlCommand(sql, con))
   {
       //打开连接(最晚打开,最早关闭)
       con.Open();  5
       //执行SQL语句
       //当执行SQL语句时,如果是聚合函数,那么ExecuteScalar(),返回的值不可能是null,如果没有数据就是0。如果执行的不是聚合函数,返回值可能是null,使用count 变量的时候就需先判断是否为null
       object count = Convert.ToInt32(cmd.ExecuteScalar());//当执行返回单个结果的时候使用ExecuteScalar
       //cmd.ExecuteScalar();当查询出多行多列结果时,使用该方法 6
       Console.WriteLine("查询到数据{0}条", count);
    }
 }
 Console.ReadKey();

 

关于ADO.NET的学习就先分享到这里。希望对大家有所帮助,具体详细应用请查看SQLHelper封装)。

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值