C#连接SQL Server数据库(二)

时间:2022-06-06 01:26:41

执行SQL语句:Command对象

1.Command对象概述

??Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的SQL语句。Command对象主要有以下几种方式。
????SqlCommand:用于向SQL Server数据库发送SQL语句,位于System.Data.SqlClient命名空间。
????OleDbCommand:用于向使用OLEDB公开的数据库发送SQL语句,位于System.Data.OleDb命名空间。例如,Access数据库和MySQL数据库都是OLEDB公开的数据库。
????OdbcCommand:用于向ODBC公开的数据库发送SQL语句,位于System.Data.Odbc命名空间。有些数据库如果没有提供相应的连接程序,则可以配置好ODBC连接后,使用OdbcCommand。
????OracleCommand:用于向Oracle数据库发送SQL语句,位于System.Data.OracleClient命名空间。

2.设置数据源类型

??Command对象有3个重要的属性,分别是Connection、CommandText和CommandType。Connection属性用于设置SqlCommand使用的SqlConnection。CommandText属性用于设置要对数据源执行的SQL语句或存储过程。CommandType属性用于设置指定CommandText的类型。CommandType属性的值是CommandType枚举值,CommandType枚举有3个枚举成员,分别介绍如下。
????StoredProcedure:存储过程的名称。
????TableDirect:表的名称。
????Text:SQL文本命令。
??如果要设置数据源的类型,则可以通过设置CommandType属性来实现。

3.执行SQL语句

??Command对象需要取得将要执行的SQL语句,通过调用该类提供的多种方法,向数据库提交SQL语句。下面详细介绍SqlCommand对象中的几种执行SQL语句的方法。

??1.ExecuteNonQuery方法
??执行SQL语句,并返回受影响的行数,在使用SqlCommand向数据库发送增、删、改命令时,通常使用ExecuteNonQuery方法执行发送的SQL语句。

        private void button1_Click(object sender, EventArgs e)
        {
            string connString = "server=.;database=denglu;uid=test;pwd=test;connect timeout=5";
            SqlConnection sqlconn = new SqlConnection(connString);
            sqlconn.Open();

            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.Connection = sqlconn;
            sqlcmd.CommandText = "update Users set password=888 where username='哈哈哈'";
            sqlcmd.CommandType = CommandType.Text;

            //int i = Convert.ToInt32(sqlcmd.ExecuteNonQuery()); //ExecuteNonQuery返回受影响的行数
            //MessageBox.Show(i.ToString());
        }

??2.ExecuteReader方法
??执行SQL语句,并生成一个包含数据的SqlDataReader对象的实例。
??代码:

        private void button1_Click(object sender, EventArgs e)
        {
            string connString = "server=.;database=denglu;uid=test;pwd=test;connect timeout=5";
            SqlConnection sqlconn = new SqlConnection(connString);
            sqlconn.Open();

            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.Connection = sqlconn;
            sqlcmd.CommandText = "select password from users";
            sqlcmd.CommandType = CommandType.Text;

            //使用ExecuteReader方法实例化一个SqlDataReader对象
            SqlDataReader sdr = sqlcmd.ExecuteReader();
            while (sdr.Read())
            {
                listView1.Items.Add(sdr[0].ToString());
            }

            sqlconn.Dispose();
            button1.Enabled = false;
        }

??界面:

C#连接SQL Server数据库(二)
?? 3.ExecuteScalar方法
??执行SQL语句,返回结果集中的第一行的第一列
?? 代码:

        SqlConnection sqlConnection;
        private void Form2_Load(object sender, EventArgs e)
        {
            string connString = "server=.;database=TBWRIMS;uid=test;pwd=test;connect timeout=5";
            sqlConnection = new SqlConnection(connString);
            sqlConnection.Open();
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            try
            {
                if (sqlConnection.State == ConnectionState.Open || txt1.Text != "")
                {
                    SqlCommand sqlCommand = new SqlCommand(); //***
                    sqlCommand.Connection = sqlConnection; //设置Connection属性
                    sqlCommand.CommandText = "select count(*) from"   txt1.Text.Trim(); // 设置CommandText属性,以及SQL语句
                    sqlCommand.CommandType = CommandType.Text; //设置CommandType属性为Text,使其只执行SQL语句

                    int i = Convert.ToInt32(sqlCommand.ExecuteScalar()); //使用ExecuteScalar方法获取指定数据表中的数据数量                   
                    lab2.Text = "数据表*有:"  i.ToString()   "条数据";

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

??界面:

C#连接SQL Server数据库(二)