ADO.Net之SqlConnection、 Sqlcommand的应用
一、思维导图:
ADO.NET与SQL连接:
二、知识点介绍:
SqlConnection和Sqlcommand都是组成数据提供程序的类。
SqlConnection使用它来建立和数据库的连接,Sqlcommand使用它执行SQL命令和存储过程。
ADO.NET有两种类型的对象:基于连接的和基于内容的,SqlConnection和Sqlcommand属于基于连接的,它们连接到数据库,执行SQL语句,遍历只读结果集或者填充DataSet。基于连接的对象是针对具体数据源类型的,并且可以在提供程序制定的命令空间中(例如SQL Server提供程序的System.Data.SqlClient)找到。
2.1SqlConnection
SqlConnection类用于建立到SQL Server数据库的开放连接。这是一个封闭的类,所以不能被继承。连接到Microsoft SQL Server数据库时,SqlConnection类与SqlDataAdapter和SqlCommand类一起使用来提高性能。
即使连接超出范围,连接也不会明确关闭。 因此,在代码中必须通过调用Close()方法显式关闭连接。
1.SqlConnection类签名(语法):
Public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable, IDisposable
SqlConnection有2个构造方法,一个有参,一个无参
public SqlConnection();
public SqlConnection(string connectionString);
3.创建SqlConnection对象的两种形式:
SqlConnection connection = new SqlConnection("data source=.; database=SampleDB; integrated security=SSPI");
SqlConnection connection = new SqlConnection(); connection.ConnectionString = "data source=.; database=SampleDB; integrated security=SSPI";
3.创建SqlConnection类构造函数
编号 | 构造函数 | 描述 |
1 | SqlConnection() | 它用于初始化SqlConnection类的新实例。 |
2 | SqlConnection(String) | 它用于初始化SqlConnection类的新实例,并将连接字符串作为参数。 |
3 | SqlConnection(String, SqlCredential) | 它用于初始化一个带有两个参数的SqlConnection类的新实例。首先是连接字符串,其次是SQL凭据。 |
4.SqlConnection类的方法
编号 | 方法 | 描述 |
1 | BeginTransaction() | 它用于启动数据库事务。 |
2 | ChangeDatabase(String) | 它用于更改当前数据库以打开SqlConnection。 |
3 | ChangePassword(String, String) | 它会更改连接字符串中指示的用户的SQL Server密码。 |
4 | Close() | 它用于关闭与数据库的连接。 |
5 | CreateCommand() | 它作为分布式事务在指定的事务中使用。 |
6 | GetSchema() | 它返回这个SqlConnection的数据源的模式信息。 |
7 | Open() | 它用来打开数据库连接。 |
8 | ResetStatistics() | 如果启用统计信息收集,它会重置所有值。 |
2.2 SqlCommand
ADO.Net的SqlCommand类用于存储和执行SQL Server数据库的SQL语句。这是一个封闭的类,所以不能被继承。
1.SqlCommand类签名(语法):
public sealed class SqlCommand : System.Data.Common.DbCommand, ICloneable, IDisposable
2.构造的函数
编号 | 构造函数 | 描述 |
1 | SqlCommand() | 它用于初始化SqlCommand类的新实例。 |
2 | SqlCommand(String) | 它用于使用字符串参数初始化SqlCommand类的新实例。 |
3 | SqlCommand(String, SqlConnection, SqlTransaction) | 它用于初始化SqlCommand类的新实例。它分别使用三个参数查询,连接和事务字符串。 |
4 | SqlCommand(String, SqlConnection, SqlTransaction, SqlCommandColumnEncryptionSetting) | 它使用指定的命令文本,连接,事务和加密设置来初始化SqlCommand类的新实例。 |
- 构造方法
编号 | 方法 | 描述 |
1 | BeginExecuteNonQuery() | 它用于启动由此SqlCommand描述的SQL语句的异步执行。 |
2 | Cancel() | 它试图取消一个SqlCommand的执行。 |
3 | Clone() | 它创建一个新的SqlCommand对象,它是当前实例的一个副本。 |
4 | CreateParameter() | 它创建一个SqlParameter对象的新实例。 |
5 | ExecuteReader() | 它用于将CommandText发送给Connection并构建一个SqlDataReader。 |
6 | ExecuteXmlReader() | 它用于将CommandText发送给Connection并构建一个XmlReader对象。 |
7 | ExecuteScalar() | 它执行查询并返回结果集中第一行的第一列,其他列或行将被忽略。 |
8 | Prepare() | 它用于通过使用SQL Server的实例来创建准备好的命令版本。 |
9 | ResetCommandTimeout() | 它用于将CommandTimeout属性重置为默认值。 |
三、实例说明:创建一个SqlCommand实例并执行一条SQL语句
using System;using System.Data.SqlClient;
namespace AdoNetSqlCommand{
class Program
{
static void Main(string[] args)
{
new Program().CreateTable();
}
public void CreateTable()
{
SqlConnection con = null;
try
{
// Creating Connection
con = new SqlConnection("data source=.; database=student; integrated security=SSPI");
// writing sql query
SqlCommand cm = new SqlCommand("select * from student_info", con);
// Opening Connection
con.Open();
Console.WriteLine("当前 student_info 表中的记录信息如下 - ");
// Executing the SQL query
SqlDataReader sdr = cm.ExecuteReader();
while (sdr.Read())
{
Console.WriteLine("学生编号:"+ sdr["id"] + ",姓名: "+sdr["name"] + ",电子邮箱: " + sdr["email"]);
}
}
catch (Exception e)
{
Console.WriteLine("OOPs, something went wrong." + e);
}
// Closing the connection
finally
{
con.Close();
}
}
}}