学习笔记(一)ADO.Net中Sqlconnection与Sqlcommand的应用
一、SqlConnection应用
1、Connection类:用于开启、关闭程序和数据库之间的连接。没有利用Connection类将数据库打开时无法从数据库中取得数据的。
2、通过Sqlconnection类与数据库进行交互的基本流程:
(1)添加引用System.Data.SqlClient。
(2)设置连接字符串和其他属性(如连接超时等)。
(3)创建Sqlconnection类的实例。
(4)打开连接,执行数据库操作。
(5)关闭连接。
3、SqlConnection类的常用属性:
ConnectionString:连接字符串,用于连接SQL Server数据库
ConnectionTimeout:在抛出异常之前尝试的连接最大耗时
DataBase:连接的数据库名称
DataSource:连接的数据库名称
State:连接的当前状态,如Open、Closed、Closing等
4、SqlConnection类的常用方法:
BeginTransaction:启动数据库事务管理
ChangeDatabase:将连接动态地切换到指定地数据库
CreateCommand:创建与该连接关联的SqlCommand实例
Open:打开数据库连接
Close:关闭数据库连接、允许释放所占用资源
Dispose:释放当前连接
5、创建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应用
1、Command类:在程序已经和数据库连接的基础上,Command类可以生成并执行SQL语句,对数据库执行一些操作,例如对数据库的增加、删除、修改和查询等操作。
2、SqlCommand类常用属性:
CommandText:用于获取或设置需要对数据库源执行的SQL语句或存储过程。
CommandTimeout:获取或设置在终止命令的尝试并生成错误之前的等地时间,默认值为30s。
CommandType:用于获取或设置一个值,该值指示如何解释CommandText属性。如通过枚举类型CommanType将CommandType属性设置为StoreProcedure,则应将CommandText属性设置为存储过程的名称。
3、SqlCommand类常用方法:
ExecuteNonQuery:用于执行连接数据源上的SQL语句。它用于一些DDL语句、活动查询如Insert、Update、Delete等操作。该方法返回受影响的行数,但并不输出所返回的参数或结果集。主要用于更新数据库。
ExecuteReader:用于执行数据源上的SQL Select语句,返回一个快速只向前的结果集DataReader对象。
ExecuteScalar:用于执行一个返回单个标量值的存储过程或SQL语句。它将结果集中的第一列的第一行返回到调用应用程序,并忽略其他所有返回值。主要用于查询结果只有一个值的情况。
4、Command对象的创建:
使用代码创建:
(1)创建数据库连接
(2)定义要执行的SQL语句
(3)生成Command对象,一般语法如下:
Sqlcommand Command 对象名=new SqlCommand(SQL语句,数据连接)、
(4)调用方法执行SQL语句
使用控件创建:
(1)同创建数据连接控件的方法相同,将SqlCommand控件添加到“数据”项中
(2)将SqlCommand控件添加到窗体中,并采用自动命名sqlCommand1
(3)将SqlConnection控件添加到窗体中,采用自动命名sqlConnection1。并设置Connection属性的值为当前已有的连接,若没有则需要重新连接
(4)设置sqlCommand1的Connection属性为sqlConnection1
(5)设置CommandText属性的值,单击其右边的空格,打开查询分析器,在“添加表”对话框中选择要执行操作的表,添加到查询生成器中,关闭“添加表”对话框。
(6)在查询生成器中选择需要查询的列,在下面会生成相应的SQL语句,然后单击“执行查询”按钮,该选项卡的最下面表格中将显示出查询结果,单击“确定”按钮,完成操作
思维导图:
范例:
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();
}
}
}