ADO.NET 概述:
ADO.NET:是微软公司提供的数据库访问技术,在.NET Framework中负责数据访问的类库集,用于支持 MYSQL和XML等数据源进行访问,客户端可以连接数据源、并查询、添加、删除和更新等数据,是程序和数据源之间的桥梁,提供了面向对象的数据访问架构
ADO.NET优势:在于与数据源完全断开连接的情况下,对数据进行修改,再讲数据的更新情况返回至数据源,减少了由于数据库连接过多而引起服务器资源被占用的现象
ADO.NET 支持多层应用程序的开发,在多层体系结构中,相邻层之间需要传递数据,ADO.NET解决方案是以XML格式表示内存数据(数据集),然后将数据以XML格式进行发送。(XML是一种通用格式,可以被多种接口接受,还可以穿越防火墙)所以它具有跨平台性和良好的交互性
ADO.NET体系结构:
.NET Framework (数据提供程序):专为数据操作设计的组件,用于处理不同的数据源,支持访问特定的数据库、执行SQL命令和检索结果,它在应用程序和数据源之间搭建了一座桥梁
注:由于数据源不同,上述4个对象针对不同数据源,在 .NET Framework 数据提供程序中提供了不同的解决方案
DataSet(数据集 ):专为独立于所有数据源的数据访问而设计,它在支持ADO.NET的断开式、分布式数据方案中起着至关重要
1、断开式:只需要在执行数据库命令时保持数据库的连接,命令执行完毕后将查询到的数据缓存至内存,此时断开数据库连接,在内存中获取数据
使用Connection对象,DataAdapter对象和DataSet对象实现断开式访问数据库步骤:
1、创建数据库连接对象 Connection
2、创建数据适配对象 DataAdapter,指定select命令和Connection对象
3、创建数据集DataSet对象,用于在内存中缓存数据
4、使用DataAdapter对象将查询到的数据填充至DataSet数据集中
5、更新DataSet中的数据
6、使用DataAdapter对象将DataSet对象中的数据回传至数据库中
2、非断开式:在整个操作过程中需要保持数据库连接
使用Connection对象,Command对象和DataReader对象实现非断开式访问数据库步骤:
一、对数据库进行更改(如Insert、Update、Delete)或执行聚合函数
1、创建数据库连接对象 Connection,并打开连接
2、创建命令对象Command
3、执行相应的SQL命令(Insert、Update、Delete或聚合函数)
4、关闭数据库连接
二、查询数据库(select)
1、创建数据库连接对象 Connection,并打开连接
2、创建命令对象Command
3、执行Select查询命令,获取DataReader对象
4、使用while循环读取DataReader中的数据
5、关闭DataReader对象
6、关闭数据库连接
ADO.NET操作数据库的原理
Connection:用于连接数据库,在应用程序和数据库之间建立了一条数据传输通道
属性 | 说明 |
ConnectionString | 用于连接数据库的连接字符串 |
State | 用于指示连接对象的状态,枚举类型 |
方法 | 说明 |
Open() | 打开数据库连接 |
Close() | 关闭数据库连接 |
可以通过State属性判断数据库的连接状态,如数据库连接是否已经打开、是否已经关闭等,State属性是ConnectionState的枚举类型包含如下6种状态:
枚举值 | 说明 |
Broken | 中断数据库连接,可以先关闭后在打开 |
Closed | 关闭数据库连接状态 |
Connecting | 连接对象与数据库进行连接 |
Executing | 连接对象正在检索数据 |
Fetching | 连接对象正在检索数据 |
Open | 数据库连接处于打开装填 |
1、SQL Server数据库存在两种登录方式:
1、SQL Server身份验证
语法:server=服务器名;database=数据库名;uid=用户名;pwd=密码;
2、Windows身份验证
语法:server=服务器名;database=数据库名;Integrated Security=true;
2、导入System.Data和System.Data.SqlClient命名空间
using System.Data;
using System.Data.SqlClient;
3、创建Connection对象 语法:SQLConnection 连接对象名=new SQLConnection(“连接字符串”);
4、打开连接:连接对象名.Open();
5、关闭连接:连接对象名.Close();
Command:用于执行SQL命令,对数据库中的数据进行增、删、改、查和执行聚合函数(在操作过程中必须保持应用程序和数据库之间的连接)
属性 | 说明 |
CommandTex | 获取或设置对数据库执行的T-Sql命令 |
Connection | 获取或设置连接数据库的Connection对象 |
方法 | 说明 |
ExecuteNonQuery | 执行SQL语句,并返回受影响行数 |
ExcuteReader | 执行查询命令,并且返回DataReader对象 |
ExecuteScalar | 执行查询命令,返回结果集中首行行列的值 |
创建Command对象语法:SQLConnection 命令对象名=new SQLConnection(“SQL语句”,Connection对象);
执行SQL语句,返回受影响的行数,语法:
int 受影响行数=命令对象名.ExecuteNonQuery();
执行Command对象的 ExecuteNonQuery()方法前必须先打开数据库连接,执行完毕后需要关闭数据库连接,否则会报错
DataReader:数据读取对象,提供了一个只读只进的数据读取器,用于从查询结果中读取数据,它每次只能读取一行数据,并且在读取过程中必须保持连接打开状态
属性 | 说明 |
FieldCount | 获取每行数据的列数 |
HasRows | 指示查询结果中是否还存在未读取的数据Bool类型 |
方法 | 说明 |
Read | 使DataReader前进到下一条记录,如果有下一条记录返回true否则返回false |
Close | 关闭DataReader对象 |
GetName | 获取指定列的名称 |
DataReader对象负责对查询结果进行逐行读取,其实现步骤如下:
1、创建数据库连接对象Connection
2、打开数据库连接
3、定义用于查询的SQL语句
4、创建命令对象 Command
5、执行SQL命令,返回DataReader对象语法如下:
SQLDataReader 数据读取对象=命令对象.ExecuteReader();
6、使用循环 逐行读取数据 语法如下:
while(数据读取对象.read){
Object 某列的值=数据读取对象["索引或列名"];
}
7、关闭DataReader 语法如下:
数据读取对象.Close();