ado.net mysql类_ADO.NET中的数据库帮助类

ADO.NET是.net framework中的一个重要模块,用于程序和数据源的连接,它的类都位于 System.Data.dll 中。

用于SQLServer的命名空间:System.Data.SqlClient;

用于MySQL的命名空间:MySql.Data.MySqlClient;(需要安装mysql.data的NuGet包,另外vs连接mysql还要安装mysql for visual studio和connector/NET,在mysql安装包里可以选择)

在命名空间下几个常用的重要的类(MySQL对应的在前面加上My):

SqlConnection 用于创建与SQL Server的连接

SqlCommand 用于执行数据库查询

SqlDataAdapter 表示一组用于填充DataSet的数据命令和数据库连接

SqlDataReader 用于从数据库中读取行

SqlException 用于抛出SQL异常

连接字符串的格式:键=值;键=值;...键=值;

4d6890a3934f7336715f0a9dba059149.png

53300956caa1129678255889c2e6d96d.png

DbConnection类

MySqlConnection和SqlConnection类都继承自该类。

常用方法:

Open:使用ConnectionString所指定的设置打开数据库连接。

DisPose:释放由Component使用的所有资源。

Close:关闭与数据库的连接。它将连接释放到连接池,或者在连接池被禁用的情况下关闭连接。

常用属性:

DataBase:在连接打开之后获取当前数据库的名称,或者在连接打开之前获取连接字符串中指定的数据库名称。

DataSource:获取要连接的数据库服务器的名称。

ConnectionTimeOut:获取在建立连接时终止尝试并生成错误之前的等待时间。

ConnectionString:获取或设置用于打开连接的连接字符串。

State:获取描述连接状态的字符串。(类型为ConnectionState,枚举类型)

ConnectionState

它是一个枚举类型,包括以下几个成员:

Closed:连接处于关闭状态

Open:连接处于打开状态

Connecting:连接对象正在与数据源连接

Executing:连接对象正在执行命令。

Fetching:连接对象正在检索数据。

Broken:与数据源的连接中断。

Command对象

在DbConnnection对象连接到数据库后,由Command对象负责对数据源的操作(如增删改查等sql语句和存储过程),并在执行完成后返回合适的结果,我们使用的SqlCommand和MySqlCommand都是继承自DbCommand类。

常用属性:

CommandText:获取或设置对数据源执行操作的文本命令

CommandType:命令类型,指定如何解释CommandText属性。CommandType属性的值是一个枚举类型,定义结构如下:

public enum CommandType

{

Text = 1;//SQL文本命令

StoredProcedure = 4;//存储过程的名称

TableDirect = 512;//表的名称

}

将CommandType设置为StoredProsedure时,应将CommandText属性设置为存储过程的名称。调用Execute方法之一时,该命令将执行此存储过程。

Connection:设置或获取与数据源的连接。

Parameters:绑定SQL语句或存储过程的参数。参数化查询中不可或缺的对象,非常重要。

Tranction:获取或设置在其中执行.NetFramework数据提供程序的Command对象的事务。

常用方法

ExecuteNonQuery:执行不返回数据行的操作,并返回一个Int类型的数据。(对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。 对于其他所有类型的语句,返回值 为 -1。)

ExecuteReader:执行查询,并返回一个DataReader对象。(主要用于查询多行数据)

ExecuteScalar:执行查询,并返回查询结果集中第一行的第一列。如果找不到第一行第一列,则返回null的引用。(主要用于查询单个数据)

2b7cc553707e2f4a61051caf2ea21106.png

异步执行命令:BeginExecuteNonQuery和EndExecuteNonQuery。

这两个方法返回的是System.IAsyncResult接口对象,可以通过该对象的IsCompleted属性来轮询(检测)命令是否执行完成。

3f258dfe76cc007c4ddfbd4463016a91.png

DataAdapter

Connection对象,Command对象和DataReader对象,均属于Data Provider的一部分,而且都是基于连接的。这些对象可以让我们连接一个数据源,执行SQL语句,检索只读的数据流等。这些基于连接的对象都对应于特定的数据源。换句话说,对于不同的数据源,我们需要找到对应的数据提供程序来匹配。但是,如果我们每次检索数据库中的表或者行都需要连接一次数据库,那么性能和效率是十分低下的。实际上,ADO.NET提供了基于非连接的组件DataSet。DataSet可以让我们在本地内存中操作数据表等,就好比操作数据库中的表一样。

DataAdapter数据适配器:为外部数据源和Dataset集合搭建了一座桥梁,将从外部数据源检索到的数据集合理正确地调配到本地内存中的DataSet集合中。

727bece36b031d428be10e101e28cea2.png

使用Parameter防止SQL注入

0b3ae82db2e2eb51f32e5b03954b7011.png

实例:

1a65a2c370d69e085eba939e492a8e8b.png

d71d8bcea4dc3795cd11703deb22adbb.png

4cadc3b61e876be06dcba7cc4e5cba87.png

33a128f425b2136b75ebc711d28fa6d7.png

完整代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data.SqlClient;

using MySql.Data.MySqlClient;

using System.Configuration;

using System.Data;

namespace WebApplication1

{

public static class SqlHelper

{

//读取配置文件中的连接字符串信息

private static string connectionString = ConfigurationManager.ConnectionStrings["connMySQL"].ConnectionString;

///

/// 执行增、删、改的方法

///

/// 预计执行的非SELECT查询语句

/// SQL语句中的可变参数

/// 返回受影响的行数

public static int ExecuteNonQuery(string sql,params MySqlParameter[] param)

{

using(MySqlConnection conn = new MySqlConnection(connectionString))

{

try

{

conn.Open();

MySqlCommand cmd = new MySqlCommand(sql, conn);

cmd.Parameters.AddRange(param);

return cmd.ExecuteNonQuery();

}

catch (Exception ex)

{

Console.WriteLine("异常信息:\n" + ex.Message);

return -2;

}

}

}

///

/// 执行查询操作

///

///

///

/// 返回查询多列

public static MySqlDataReader ExecuteReader(string sql,params MySqlParameter[] param)

{

MySqlConnection conn = new MySqlConnection(connectionString);

try

{

conn.Open();

MySqlCommand cmd = new MySqlCommand(sql, conn);

cmd.Parameters.AddRange(param);

//设置CommandBehavior.CloseConnection后,关闭SqlDataReader时会自动关闭使用的连接。

return cmd.ExecuteReader(CommandBehavior.CloseConnection);

}

catch (Exception ex)

{

throw ex;

}

}

///

/// 执行查询操作

///

///

///

/// 返回单个数据对象

public static Object ExecuteScalar(string sql, params MySqlParameter[] param)

{

using (MySqlConnection conn = new MySqlConnection(connectionString))

{

try

{

conn.Open();

MySqlCommand cmd = new MySqlCommand(sql, conn);

cmd.Parameters.AddRange(param);

return cmd.ExecuteScalar();

}

catch (Exception ex)

{

throw ex;

}

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值