ADO.NET实用经验汇总

ADO.NET实用经验汇总攻略

什么是ADO.NET

ADO.NET是微软面向Web应用程序开发的一组数据访问服务,旨在为数据库访问提供优化的集合类,包括连接管理、命令执行、数据读取、数据适配等一系列功能,使得Web应用程序在处理关系型数据时更加高效和灵活。

ADO.NET的应用场景

ADO.NET适用于对关系型数据库进行数据操作的场景,如用户账户管理、订单交易记录、商品库存管理等系统的后台数据处理。它可用于创建ADO.NET连接、使用SQL查询和更新语句、查询并返回数据集,并支持通过基于.NET的编程语言如C#和VB.NET进行数据读写及处理操作。

ADO.NET主要组件

数据源

数据源是指数据存储的位置,例如SQL Server、Oracle、MySQL等数据库。数据源的相关信息需要在应用程序中进行配置。

连接管理器

ADO.NET连接管理器可以建立到数据源的连接,并支持配置连接字符串、打开、关闭、激活、测试等操作。

命令对象

ADO.NET命令对象是执行对数据源的查询、更新以及存储过程的重要对象。其中包括SqlCommand、SqlDataAdapter、SqlDataReader、SqlTransaction等对象。

数据适配器

数据适配器是一个连接器,用于连接应用程序的数据源和数据集,并利用其中的数据更新数据源。Adpater除了查询数据,还可以利用Fill方法把多条记录集一次性移到客户端,也可以把变更的数据同步至数据源。主要包括SqlDataAdapter、OleDbDataAdapter、OracleDataAdapter等适配器。

数据集

ADO.NET的数据集是在数据源执行操作时中间存储的结果集。DataSet、DataTable、DataRow和DataColumn等对象。

开始使用ADO.NET

连接数据库

对于连接数据库,首先要加载数据源驱动程序,然后利用连接对象建立到数据源的连接。在建立连接时,需要配置连接字符串,指明连接的用户名和密码等信息。

using System.Data.SqlClient;

//声明连接字符串
string connectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True;";

//创建SqlConnection对象,连接到数据源
SqlConnection connection = new SqlConnection(connectionString);

//打开连接
connection.Open();

使用命令对象查询数据

可以使用SqlCommand对象来执行对数据库的SqlCommand.Select,SqlCommand.Insert,SqlCommand.Update和SqlCommand.Delete等SQL查询语句。

using System.Data.SqlClient;

//声明执行查询的SQL语句
string queryString = "SELECT EmployeeID, LastName, FirstName FROM Employees WHERE City = @city";

//创建SqlCommand对象并设置查询语句和连接对象
SqlCommand command = new SqlCommand(queryString, connection);

//添加参数
command.Parameters.AddWithValue("@city", "London");

//执行查询并返回一个SqlDataReader对象
SqlDataReader reader = command.ExecuteReader();

//循环遍历每一行结果,并输出记录的某些值
while (reader.Read())
{
    Console.WriteLine("{0}\t{1}\t{2}",
                      reader.GetInt32(0), reader.GetString(1), reader.GetString(2));
}

//关闭SqlDataReader对象
reader.Close();

使用数据适配器填充数据集

可以使用SqlDataAdapter对象来填充数据集。示例如下:

using System.Data.SqlClient;

//声明一个SqlDataAdapter对象
SqlDataAdapter dataAdapter = new SqlDataAdapter();

//声明执行查询的SQL语句
string queryString = "SELECT EmployeeID, LastName, FirstName FROM Employees WHERE City = @city";

//创建一个可以连接到数据源的SqlCommand对象
SqlCommand command = new SqlCommand(queryString, connection);

//使用SqlCommand对象的参数集合
command.Parameters.AddWithValue("@city", "London");

//使用SqlCommand对象为DataAdapter设置SelectCommand属性
dataAdapter.SelectCommand = command;

//声明一个数据集
DataSet dataSet = new DataSet("EmployeeSet");

//使用DataAdapter填充数据集
dataAdapter.Fill(dataSet, "Employees");

//在数据集的表中遍历每个行数据
foreach (DataRow dataRow in dataSet.Tables["Employees"].Rows)
{
    Console.WriteLine("{0}\t{1}\t{2}", dataRow["EmployeeID"], dataRow["LastName"], dataRow["FirstName"]);
}

ADO.NET使用中的一些实用经验

  1. 尽量使用连接池
    在Web应用程序中,通常需要使用多个并发连接,为了节省连接资源和优化系统性能,可以使用连接池技术缓存连接,并根据连接使用情况自动回收未使用的连接。

  2. 使用存储过程
    存储过程是预编译的SQL代码的集合,可以在数据库服务器上执行,可以有效提高性能和减少数据库系统开销,也可以加强对数据的安全性。
    可以使用SqlCommand对象的CommandType属性为存储过程创建SqlCommand对象。

示例:

//声明执行存储过程的SqlCommand对象
SqlCommand cmdOrderTotal = new SqlCommand("CustOrderTotal", connection);
cmdOrderTotal.CommandType = CommandType.StoredProcedure;

//为存储过程的参数赋值
cmdOrderTotal.Parameters.AddWithValue("@CustomerID", "ALFKI");
cmdOrderTotal.Parameters.Add("@Total", SqlDbType.Money);
cmdOrderTotal.Parameters["@Total"].Direction = ParameterDirection.Output;

//执行存储过程
cmdOrderTotal.ExecuteNonQuery();

//读取输出参数的值
decimal orderTotal = (decimal)cmdOrderTotal.Parameters["@Total"].Value;
  1. 对于一些可变的查询条件最好使用SqlParameter
    使用SqlParameter可以有效防止SQL注入攻击,同时也增加了代码清晰度和调试灵活性。

示例:

//声明执行查询的SQL语句和参数化查询参数
string queryString = "SELECT EmployeeID, LastName, FirstName FROM Employees WHERE City = @city AND Country = @country";

//创建SqlCommand对象并设置查询语句和连接对象
SqlCommand command = new SqlCommand(queryString, connection);

//添加参数SqlParameter对象
SqlParameter cityParam = new SqlParameter("@city", SqlDbType.NVarChar, 30);
cityParam.Value = "Redmond";
SqlParameter countryParam = new SqlParameter("@country", SqlDbType.NVarChar, 30);
countryParam.Value = "USA";
command.Parameters.Add(cityParam);
command.Parameters.Add(countryParam);

//执行查询并返回一个SqlDataReader对象
SqlDataReader reader = command.ExecuteReader();

//循环遍历每一行结果,并输出记录的某些值
while (reader.Read())
{
    Console.WriteLine("{0}\t{1}\t{2}",
                      reader.GetInt32(0), reader.GetString(1), reader.GetString(2));
}

//关闭SqlDataReader对象
reader.Close();

以上就是ADO.NET实用经验的一些攻略和示例。希望您可以通过本攻略了解ADO.NET的基本组成和应用场景,并掌握一些实用的技巧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ADO.NET实用经验汇总 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • yum install mysql-community-server错误解决方案

    1.配置 系统:centos7.6 mysql版本:mysql 5.7 2.这里原先的方案为:直接卸载mysql 3.遇到的问题: 安装mysql的最后一步时 #yum install mysql-community-server 遇到以下错误: Error: Package: 2:postfix-2.10.1-7.el7.x86_64 (@anaconda…

    MySQL 2023年4月12日
    00
  • Redis架构实战:高并发情况下并发扣减库存

    原文:Redis架构实战:高并发情况下并发扣减库存 – 掘金https://juejin.cn/post/6995481370269057032?share_token=08d1ede7-872f-40ab-bb59-2d455aa57131 相信大家从网上学习项目大部分人第一个项目都是电商,生活中时时刻刻也会用到电商APP,例如淘宝,京东等。做技术的人都知…

    Redis 2023年4月11日
    00
  • [视频教程] 使用docker的方式安装redis

    直接使用docker拉取redis的镜像,并且进行端口映射与文件目录共享,这样可以直接在宿主机的端口上就可以进行访问了。其实本质上也是在一个简化版的ubuntu的容器内安装好的redis-server服务。 将docker修改为163镜像源在/etc/docker/daemon.json文件中添加下面参数{ “registry-mirrors” : [“ht…

    Redis 2023年4月11日
    00
  • MySQL联表查询的简单示例

    MySQL联表查询,指的是通过多个表的关联查询,实现更加复杂和全面的数据查询。这里我们将介绍MySQL联表查询的基本语法和两个简单的示例说明。 基本语法 下面是MySQL联表查询的基本语法: SELECT column1, column2, … FROM table1 JOIN table2 ON condition WHERE condition; S…

    database 2023年5月21日
    00
  • 从MySQL数据库表中取出随机数据的代码

    从MySQL数据库表中取出随机数据的代码,可使用以下两种方式实现: 方式一:使用MySQL自带的RAND()函数 在查询时,可以添加RAND()函数来实现随机排序,然后使用LIMIT进行限制数据条数,即可取出随机数据。以下为示例代码: SELECT * FROM `table_name` ORDER BY RAND() LIMIT 10; 说明:- “tab…

    database 2023年5月19日
    00
  • PHP使用SWOOLE扩展实现定时同步 MySQL 数据

    PHP使用SWOOLE扩展实现定时同步MySQL数据可以分为以下几个步骤: 步骤一:安装SWOOLE扩展在PHP的环境中安装SWOOLE扩展,可以采用源码编译、pecl扩展安装等方式进行安装。SWOOLE扩展提供了一种高效的方式可以在PHP中与网络编程、异步编程、并发编程等进行更加方便的交互。 步骤二:编写数据同步脚本在PHP中编写数据同步脚本,通过SWOO…

    database 2023年5月22日
    00
  • MySQL索引类型Normal、Unique和Full Text的讲解

    MySQL是目前应用最广泛的数据库之一,在建立表的时候经常需要对其进行索引以提高查询的速度。MySQL支持的索引类型有Normal、Unique和Full Text,下面我将详细讲解这三种索引类型。 Normal索引 Normal索引是最基本的索引类型,它将数据排序并放置在B-tree(平衡树)结构中,能够极大地提高查询效率。Normal索引不限制表中字段的…

    database 2023年5月22日
    00
  • DBMS 中的候选键

    候选键(Candidate Key)指在一张关系表中,能唯一的标识每一个元组的属性或属性集合。换句话说,候选键是一组属性,其唯一地确定一个关系中的每一行,没有重复行。候选键和主键的概念非常相似,不同的是,一张表可能存在多个候选键,但只能有一个主键。本文将详细解释DBMS中的候选键,包括定义、特性、举例和应用场景。 1. 定义 在一个关系表中,候选键是一组属性…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部