執行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;
}
界面:

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);
}
}
  <b>界面:</b>
<center><img src="https://img2018.cnblogs.com/blog/1849125/202001/1849125-20200131160758181-363282996.png" width="400" height="150"></center>