好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

ADO.NET基础

一、 ADO.NET概述

概述:

ADO.NET是微软公司提供的一款全新的数据库访问技术,是在.NET Framework中负责数据访问的类库集;

可以将ADO.NET比喻为数据库应用程序和数据源之间的桥梁,提供了一个面向对象的数据访问架构;

优势:

可以在数据源完全断开连接的情况下,对数据进行更新修改,再将数据的更新情况返回至数据源。这样可以减少由于数据库连接过多而引起服务器资源被占用的情况。


二、 ADO.NET体系结构

在ADO.NET中,用于访问和操作数据库的两种主要组件:.NET Framework数据提供程序、数据集DataSet;

1,.NET Framework数据提供程序

是专为数据操作设计的组件,用于处理不同的数据源,支持访问特定数据库、执行SQl命令和检索结果;

它为不同的数据提供程序对象,其中主要的三类如下:

image.png

它还包含了4个核心对象:

image.png

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对象的常见属性,如下

image.png

State属性时ConnectionState枚举类型,包含如下6种状态

image.png

Connection对象的常用方法

image.png

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类

image.png

Conmmand对象的常用属性

image.png

Command对象的常用方法

image.png

使用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类

image.png

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


查看更多关于ADO.NET基础的详细内容...

  阅读:854次