SqlConnection对象
SqlConnection简介
要建立ADO.NET与数据库的连接,需要使用SqlConnection对象来实现,该对象需要一个数据库连接字符串。
实例化SqlConnection
实例化SqlConnection对象时必须使用数据库连接字符串,才能与SQL Server服务器建立连接。
实例化SqlConnection对象有两种方法:
//new关键字实例化SqlConnection对象
SqlConnection sqlConn = new SqlConnection(connStr);
或
//使用SqlConnection对象的ConnectionString属性指定数据库连接字符串
SqlConnection sqlConn = new SqlConnection();
sqlConn.ConnectionString = connStr;
打开连接
实例化SqlConnection对象后,还需使用SqlConnection对象的同步方法Open()或异步方法OpenAsync()打开连接。
使用同步方法Open()打开数据库连接
//读取数据库连接字符串
string connstr = ConfigurationManager.ConnectionStrings["DotNetConDb"].ConnectionString;
//构造函数实例化SqlConnection
SqlConnection sqlConn = new SqlConnection();
//指定数据库连接字符串
sqlConn.ConnectionString = connstr;
//打开数据库连接
sqlConn.Open();
异步方法OpenAsync()打开数据库连接
在最新的ADO.NET中,提供了异步方法,之前操作数据库的方法,都提供了对应的异步版本。
//读取数据库连接字符串
string connstr = ConfigurationManager.ConnectionStrings["DotNetConDb"].ConnectionString;
//构造函数实例化SqlConnection
SqlConnection sqlConn = new SqlConnection();
//指定数据库连接字符串
sqlConn.ConnectionString = connstr;
//异步方法打开数据库连接
await sqlConn.OpenAsync();
Console.ReadKey();
关闭和释放
关闭连接
ADO.NET中的数据库打开连接在执行数据库操作之后,为了下一次的连接更安全,则要关闭连接或释放资源(同时会关闭连接)。数据库的连接是先打开再关闭。
数据库的关闭使用Close()同步方法或异步方法CloseAsync()异步方法。
//读取数据库连接字符串
string connstr = ConfigurationManager.ConnectionStrings["DotNetConDb"].ConnectionString;
//构造函数实例化SqlConnection
SqlConnection sqlConn = new SqlConnection();
//指定数据库连接字符串
sqlConn.ConnectionString = connstr;
//同步方法打开数据库连接
//sqlConn.Open();
//异步方法打开数据库连接
await sqlConn.OpenAsync();
//同步关闭连接
sqlConn.Close();
//异步关闭连接
await sqlConn.CloseAsync();
使用同步方法打开数据库连接,则也要使用同步方法关闭连接。若使用异步方法打开数据库连接,则也要使用异步方法关闭连接。
释放资源
如果使用了Dispose()同步方法或DisposeAsync()异步方法,除了做与Close()方法一样的功能之外,还会清空数据库连接字符串及与数据库相关的资源。
//同步释放资源
sqlConn.Dispose();
//异步释放资源
await sqlConn.CloseAsync();
Dispose()要比Close()释放的资源多,Dispose()方法释放资源之后,是不能再使用Open()打开连接的。
使用using释放资源
使用using语句可以指定一个范围(作用域),实例化的对象只在此范围内活动,一旦离开这个范围,则就会调用该对象的Dispose()方法来释放资源。
using(SqlConnection conn = new SqlConnection(connstr))
{
//打开数据库连接
await conn.OpenAsync();
}
using语句内部没有调用Dispose()方法,但是在执行完using语句后,Sqlconnection对象的State处于Closed状态,数据库连接字符串为空,表示执行了Dispose()方法释放了资源。
SqlCommadn对象
数据库连接之后,实例化SqlCommand对象,将T-SQL语句或存储过程挂接到SqlCommand对象上,用于执行数据库操作。
SqlCommand实例化
使用构造函数实例化
构造函数实例化SqlCommand对象,需要至少2个必须参数:
- cmdText: 这是一个string类型的参数,用于指定命令文本,可以是T-sql语句,还可以是存储过程的名称。
- connection: 这是一个SqlConnection类型的数据库连接对象,将指定的SQLServer数据库与要执行的T-sql或存储过程绑定在一起,此时,我们就知道需要在哪个数据库上执行什么操作。
//读取数据库连接字符串
string connstr = ConfigurationManager.ConnectionStrings["DotNetConDb"].ConnectionString;
using(SqlConnection conn = new SqlConnection(connstr))
{
//打开数据库连接
await conn.OpenAsync();
//T-sql语句
string sql = "select * from Student";
//实例化SqlCommand对象(传入两个参数,第1个是T-sql语句,第2个参数是SqlConnection对象。
SqlCommand sqlCommand = new SqlCommand(sql, conn);
}
使用属性实例化
使用空的SqlCommand()构造函数实例化SqlCommand对象,然后使用属性指定命令文本、类型和SqlConnection对象。
//读取数据库连接字符串
string connstr = ConfigurationManager.ConnectionStrings["DotNetConDb"].ConnectionString;
//使用属性实例化SqlCommand
using(SqlConnection conn = new SqlConnection(connstr))
{
//打开数据库连接
await conn.OpenAsync