ADO.NET中有关SqlConnection与Sqlcommand 的介绍与应用
ADO.NET中有关SqlConnection与Sqlcommand 的介绍与应用
思维导图:
ADO.NET提供5个主要的类的对象来实现数据的连接访问和离线访问。这5个类分别是Connection、Command、DataReader、DataAdapter和DataSet。
SqlConnection 的介绍与应用
1、介绍与作用
SqlConnection是ADO.NET中的连接类。
使用sqlconnection 类可以连接到SQL Server数据库。
2、主要属性以及方法
主要属性:ConnectionString(连接字符串)
其它属性简介:
属性 |
说明 |
ClientConnectionId |
最近连接尝试连接的 ID,无论该尝试是成功还是失败。 |
ConnectionTimeout |
获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。 (重写 DbConnectionConnectionTimeout。) |
Credential |
获取或设置此连接的 SqlCredential 对象。 |
获取当前数据库或连接打开后要使用的数据库的名称。 (重写 DbConnectionDatabase。) |
|
DataSource |
获取要连接的 SQL Server 实例的名称。 (重写 DbConnectionDataSource。) |
FireInfoMessageEventOnUserErrors |
获取或设置 FireInfoMessageEventOnUserErrors 属性。 |
PacketSize |
用来与 SQL Server 的实例进行通信的网络数据包的大小,以字节为单位。 |
ServerVersion |
获取包含客户端连接的 SQL Server 实例的版本的字符串。 (重写 DbConnectionServerVersion。) |
指示最近在连接上执行网络操作时, SqlConnection 的状态。 (重写 DbConnectionState。) |
|
StatisticsEnabled |
如果设置为 true,则对当前连接启用统计信息收集。 |
WorkstationId |
获取标识数据库客户端的一个字符串。 |
方法:Open();(打开数据库) Close();(关闭数据库)
构造函数:
名称 |
说明 |
SqlConnection |
初始化 SqlConnection 类的新实例。 |
SqlConnection(String) |
如果给定包含连接字符串的字符串,则初始化 SqlConnection 类的新实例。 |
SqlConnection(String, SqlCredential) |
初始化给定连接字符串的 SqlConnection 类的新实例,而不使用包含用户识别号和密码的 Integrated Security = true 和 SqlCredential 对象。 |
3、创建SqlConnection对象:
可以使用定义好的连接字符串创建SqlConnection对象。代码如下
SqlConnection connection=new SqlConnection(connectionString);
要访问数据源,必须先建立连接。这个连接对象里描述了数据库服务器类型、数据库的名字、用户名、密码等参数。
SqlConnection conn=new SqlConnection();
conn.ConnectionString=”Data Source=(Local);
Initial Catalog=pubs; uid=sa; pwd=sa;”
调用SqlConnection 对象的Open()与Close() 方法来打开和关闭数据库的代码如下:
打开数据库:connection.Open();
关闭数据库:connection.Close();
SqlCommand的介绍与应用
SqlCommand属于命令类
1、作用:
SqlCommand 对象用于执行具体的SQL语句,如增加、删除、修改、查找。
2、主要属性以及方法
SqlCommand对象的常用属性
属 性 |
说 明 |
Connection属性 |
指定Command对象所使用的Connection对象。 |
CommandType属性 |
指定Command对象的类型,有3种选择: 1 Text:表示Command对象用于执行SQL语句。 2 StoredProcedure:表示Command对象用于执行存储过程。 3 TableDirect:表示Command对象用于直接处理某个表。 CommandType属性的默认值为Text。 |
CommandText属性 |
根据CommandType属性的取值来决定CommandText属性的取值,分为3种情况: 1 如果CommandType属性取值为Text,则CommandText属性指出SQL语句的内容。 2 如果CommandType属性取值为StoredProcedure,则CommandText属性指出存储过程的名称。 3 如果CommandType属性取值为TableDirect,则CommandText属性指出表的名称。 CommandText属性的默认值为SQL语句。 |
CommandTimeout属性 |
指定Command对象用于执行命令的最长延迟时间,以秒为单位,如果在指定时间内仍不能开始执行命令,则返回失败信息。 默认值为30秒。 |
Parameters属性 |
指定一个参数集合。 |
SqlCommand对象的重要方法:
方法 |
说明 |
ExecuteScalar |
执行查询,并返回查询结果中的第一行第一列的值,类型是object |
ExecuteNonQuery |
执行SQL语句并返回受影响的行数 |
ExecuteReader |
执行查询命令,返回SqlDataReader对象 |
3、SqlCommand对象的使用步骤如下
(1)创建SqlConnection对象
SqlConnection connection=new SqlConnection(connectionString);
(2)定义SQL语句
把所要执行的SQL语句赋给字符串。
(3)创建SqlCommand对象
SqlCommand command = new SqlCommand();
(4)调用SqlCommand对象的某个方法,执行SQL语句。
注意:在调用SqlCommand 对象的某个方法之前,一定要打开数据库连接,否则程序会出错。
举例如下:
public partial class Form1 : Form
{
//数据库连接字符串
private static string connString = "Data Source=localhost;Initial Catalog=QQ;Integrated Security=true";
//数据库连接对象
public static SqlConnection connection = new SqlConnection(connString);
public Form1()
{
InitializeComponent();
}
//执行SQL语句
private void btnSql_Click(object sender, EventArgs e)
{
try
{
//查询用的 SQL 语句
string selectSql = "select count(*) from Users";
//创建Command对象
SqlCommand command = new SqlCommand();
//指定Command对象所使用的Connection对象
command.Connection = connection;
//指定Command对象用于执行SQL语句
command.CommandType = CommandType.Text;
//指定要执行的SQL语句
command.CommandText = selectSql;
//打开数据库连接
connection.Open();
//执行查询操作,返回单个值
this.txtCount.Text = command.ExecuteScalar().ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//关闭数据库连接
connection.Close();
}
}
//执行存储过程
private void btnStoreProc_Click(object sender, EventArgs e)
{
try
{
//创建Command对象
SqlCommand command = new SqlCommand();
//指定Command对象所使用的Connection对象
command.Connection = connection;
//指定Command对象用于执行存储过程
command.CommandType = CommandType.StoredProcedure;
//指定要执行的存储过程的名称
command.CommandText = "procSelect1";
//打开数据库连接
connection.Open();
//执行查询操作,返回单个值
this.txtCount.Text = command.ExecuteScalar().ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//关闭数据库连接
connection.Close();
}
}
}