一、 ADO.NET概述
概述:
ADO.NET是微软公司提供的一款全新的数据库访问技术,是在.NET Framework中负责数据访问的类库集;
可以将ADO.NET比喻为数据库应用程序和数据源之间的桥梁,提供了一个面向对象的数据访问架构;
优势:
可以在数据源完全断开连接的情况下,对数据进行更新修改,再将数据的更新情况返回至数据源。这样可以减少由于数据库连接过多而引起服务器资源被占用的情况。
二、 ADO.NET体系结构
在ADO.NET中,用于访问和操作数据库的两种主要组件:.NET Framework数据提供程序、数据集DataSet;
1,.NET Framework数据提供程序
是专为数据操作设计的组件,用于处理不同的数据源,支持访问特定数据库、执行SQl命令和检索结果;
它为不同的数据提供程序对象,其中主要的三类如下:
它还包含了4个核心对象:
2,数据集DataSet
是用于在内存中缓存来自数据源的数据的一个类,包含一个或多个DataTable对象的集合
三、 ADO.NET 操作数据库的方式
ADO.NET提供两种方式访问数据库,分别是:“非断开式访问”和“断开式访问”
两者的区别:
“非断开式访问”在整个操作过程中需要保持数据库连接;
“断开式访问”只需要在执行数据库命令时保持数据库连接。
1, 使用Connection对象、Command对象和DataReader对象实现非断开式访问数据库;步骤如下:
1) 对数据库进行更改(如Insert, Update和Delete)或执行聚合函数
a) 创建数据库连接对象Connection,并打开连接;
b) 创建命令对象Command;
c) 执行相应的SQl命令(Insert, Update, Delete或聚合函数);
d) 关闭数据库连接。
2) 查询数据库(Select)
a) 创建数据库连接对象Connection,并打开连接;
b) 创建命令对象Command;
c) 执行Select查询命令,获取DataReader对象;
d) 使用while循环读取DataReader中的数据;
e) 关闭DataReader对象;
f) 关闭数据库连接。
2, 使用Connection对象、DataAdapter对象和DataSet对象实现断开式访问数据库;步骤如下:
a) 创建数据库连接对象Connection;
b) 创建数据适配对象DataAdapter,指定Select命令和Connection对象;
c) 创建数据集DataSet对象,用于在内存中缓存数据;
d) 使用DataAdapter对象将查询到的数据填充至DataSet数据集中;
e) 更新DataSet中的数据;
f) 使用DataAdapter对象将DataSet对象中的数据回传至数据库中。
g) 注意:创建数据库连接对象Connection,并打开连接;
h) 创建命令对象Command;
i) 执行Select查询命令,获取DataReader对象;
j) 使用while循环读取DataReader中的数据;
k) 关闭DataReader对象;
l) 关闭数据库连接。
注意:在使用ADO.NET访问数据库时,数据库连接使用之后应尽早关闭,释放连接对象。
四、 Connection对象
Connection对象用于连接数据库;
注意:在连接数据库时,要根据使用的数据库类型,引入不同的命名空间,然后创建对应的数据库连接对象。
例如:使用SqlServer数据库,需要导入System.Data.SqlClient命名空间,创建SqlConnection对象。
Connection对象的常见属性,如下
State属性时ConnectionState枚举类型,包含如下6种状态
Connection对象的常用方法
Connection对象的语法
Server = 服务器名; database = 数据库名; Integrated Security = true;
使用案例:
//导入命名空间
usring System.Data.SqlClient;
//定义数据库连接字符串
//其中server = (local) 或者localhost【效果相同】
string connString = “server = .; database = 3CDB; Integrated Security = “true”;
//创建连接对象
SqlConnection conn = new SqlConnection(connString);
//打开数据库连接
conn.Open();
//检测数据库连接是否打开
if(conn.State == ConnectionState.Open){
Console.WriteLine(“成功连接到3CDB数据库”);
}
//关闭数据库
conn.Cose();
五、 Command对象
用于执行SQl命令,对数据库中的数据进行增、删、改、查和执行聚合函数;
在执行过程中,必须保持应用程序和数据库之间的连接。
三种常见的command类
Conmmand对象的常用属性
Command对象的常用方法
使用Command对象的三种情况:
1,增、删、改命令、行查询和执行聚合函数
Command对象的语法
SqlCommand命令对象名 = new SqlCommand(“SQL语句”, Connection对象);
//执行SQL语句,放回受影响的行数,语法如下
int 受影响的行数 = 命令对象名.ExecuteNonQuery();
使用案例:
//定义数据库连接字符串
string connString = “server = .; database = 3CDB; Integrated Security = “true;”;
//创建连接对象
SqlConnection conn = new SqlConnection(connString);
//打开数据库连接
conn.Open();
//检测数据库连接是否打开
if(conn.State == ConnectionState.Open){
//添加用户
string sql = “insert into Admins values(‘zs”, ‘123’, ‘张三’)”;
//更行用户信息
string sql = “update Admins set LoginPwd=’789’ where Login=’zs’ and
LoginPwd=’456’”;
//删除用户数据
string sql = “delete from Admins where LoginID=’zs’ and
LoginPwd=’789’”
//创建Command对象(命令对象)
SqlCommand cmd = new SqlCommand(sql, conn);
//判断受影响的行数是否大于0
if(cmd.ExecuteNonQuery() > 0){
Console.WriteLine(“数据操作成功”);
}
}
//关闭数据库
conn.Cose();
注意:执行Command对象的ExecuteNonQuery()方法前必须先打开数据库连接,执行完毕后需要关闭数据库连接。否则,将不能执行成功并出现错误。
六、 DataReader对象
提供一个只读只进的数据读取器,用于从查询结果中读取数据,每次只能读取一行数据,在读取的过程中,必须保持连接处于打开状态。
三种常见的DataReader类
DataReader对象,语法
SqlDataReader 数据读取对象 = 命令对象.ExcuteReader();
//使用循环,逐行读取数据,语法如下
while(数据读取对象.Read()){
Object 某列得值 = 数据读取对象[“索引或列名”];
}
案例1:(使用DataReader对象查询数据)
//定义数据库连接字符串
string connString = “server = .; database = 3CDB; Integrated Security = “true;”;
//创建连接对象
SqlConnection conn = new SqlConnection(connString);
//打开数据库连接
conn.Open();
//检测数据库连接是否打开
if(conn.State == ConnectionState.Open){
string sql = ”select ID, LoginId, LoginPwd, Name from admins”;
//创建Command对象(命令对象)
SqlCommand cmd = new SqlCommand(sql, conn);
//执行SQl命令,返回DataReader对象
SqlDataReader reader = cmd.ExecuteReader():
Console.WriteLine(“编号\t…“);//打印对应格式
while(reader.Read()){
string id = reader[“ID”].ToString();
……
Console.WriteLine(“{0}\t{1}…”, id, loginId,…);
}
reader.Close();//关闭读取器
}
//关闭数据库
conn.Cose();
案例2:(使用DataReader对象执行聚合函数)
//导入命名空间
usring System.Data.SqlClient;
//定义数据库连接字符串
//其中server = (local) 或者localhost【效果相同】
string connString = “server = .; database = 3CDB; Integrated Security = “true”;
//创建连接对象
SqlConnection conn = new SqlConnection(connString);
//打开数据库连接
conn.Open();
//检测数据库连接是否打开
if(conn.State == ConnectionState.Open){
//统计产品数量
string countSql = “select count(*) from Products”;
//创建Command对象(命令对象)
SqlCommand countCmd = new SqlCommand(countSql, conn);
//执行SQL命令
string count = countCmd.ExecuteSalary().ToString();
//汇总总金额
string totalSql = “select sum(stock*price) from Products”;
//创建Command对象(命令对象)
SqlCommand totalCmd = new SqlCommand(totalSql, conn);
//执行SQL命令
string total = totalCmd.ExecuteSalary().ToString();
//求平均价格
string avgSql = “select avg(price) from Products”;
//创建Command对象(命令对象)
SqlCommand avgCmd = new SqlCommand(avgSql, conn);
//执行SQL命令
string avg = avgCmd.ExecuteSalary().ToString();
//打印对应数据
Console.WriteLine(……);
}
//关闭数据库
conn.Cose();
七、总结
1,ADO.NET 操作数据库的方式有哪些?
ADO.NET提供两种方式访问数据库,分别是:“非断开式访问”和“断开式访问”
两者的区别:
“非断开式访问”在整个操作过程中需要保持数据库连接;
“断开式访问”只需要在执行数据库命令时保持数据库连接。
2,使用Command对象执行增、删、改命令的步骤是什么?
1)创建Connection对象;
2)打开数据库连接;
3)定义需要执行的增、删、改SQL语句,存入字符串变量;
4)创建Command对象;
5)执行SQL语句,返回受影响的行数;
6)关闭连接。
3,使用DataReader对象执行查询操作的步骤是什么?
1)创建数据库连接Connection对象;
2)打开数据库连接;
3)定义用于查询SQL语句;
4)创建Command对象;
5)执行SQL命令,返回DataReader对象。
————————————————
版权声明:本文为CSDN博主「我与琳虽缘无分」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wnamej/article/details/105324469