学习笔记(一)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();

思维导图:

学习笔记(一)ADO.Net中Sqlconnection与Sqlcommand的应用

二、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语句,然后单击“执行查询”按钮,该选项卡的最下面表格中将显示出查询结果,单击“确定”按钮,完成操作

思维导图:

学习笔记(一)ADO.Net中Sqlconnection与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();

            }

        }

}