1. 程式人生 > >執行資料庫操作命令物件SqlCommand

執行資料庫操作命令物件SqlCommand

資料庫應用程式的開發流程一般主要分為以下幾個步驟:

  1. 建立資料庫
  2. 使用Connection物件連線資料庫
  3. 使用Command物件對資料來源執行SQL命令並返回資料來源的資料
  4. 使用DataReader和DataSet物件讀取和處理資料來源的資料

使用Connection物件成功建立資料庫連線後,接下來就可以使用Command物件對資料來源執行查詢、新增、刪除和修改等各種SQL命令了。

SqlCommand物件用來對SQL Server資料庫執行操作命令
屬性 說明
CommandText 獲取或設定要執行的SQL語句或儲存過程
Connection 獲取或設定Command物件所要連線的Connection物件
CommandTimeout 獲取或設定命令等待執行的超時時間,預設值為30秒
Parameters 獲取與該命令關聯的引數集合
CommandType 獲取或設定命令的種類,預設值為Text
SqlCommand物件的主要方法
方法 說明
Cancel 結束執行SQL語句
Dispose 關閉Command物件,並釋放所佔用的系統資源
ExecuteScalar 用於執行查詢語句,並返回單一值或者結果集中的第一條記錄的第一個欄位的值。該方法適合只要一個結果的查詢,例如使用Sum、Avg、Max、Min等函式的SQL語句
ExecuteNonQuery 用於執行SQL語句,並返回SQL語句所影響的行數。該方法一般用於執行insert、delete、update等語句
ExecuteReader 用於執行查詢語句,並返回一個DataReader型別的行集合

1. ExecuteNonQuery方法,執行更新操作,如與 insert、delete 和 update 語句有關的操作

SqlConnection con = new SqlConnection();
con.ConnectionString ="連線字串";
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "資料更新命令";
con.Open();
com.ExecuteNonQuery();  //執行Command命令
con.Close();

2. ExecuteReader方法,通常與查詢命令 select 一起使用,並返回一個數據讀取器物件 SqlDataReader 類的一個例項。

SqlConnection con = new SqlConnection();
con.ConnectionString = "連線字串";
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "查詢語句";
con.Open();
SqlDataReader sdr = com.ExecuteReader();
while(sdr.Read()){
   Response.Write(sdr[0]);  //輸出第一個欄位的內容
}
con.Close();

3. ExecuteScalar方法,如果只想檢索資料庫資訊中的一個值,而不需要返回表或資料流形式的資料,即可使用此方法。例如只需要返回count(*)、avg(價格)、sum(數量)等函式的結果就可以使用此方法。

SqlConnection con = new SqlConnection();
con.ConnectionString = "連線字串";
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "select avg(價格) from 你的表";
con.Open();
Response.Write(com.ExecuteScalar());  //輸出第一個欄位的內容
con.Close();

【例】使用SqlComman物件增加資料庫資料,將註冊資訊插入資料庫中

protected void btnRegister_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\ASUS\Desktop\案例\EBookShop\App_Data\ShopBookDB.mdf;Integrated Security=True;User Instance=True";
        SqlCommand com = new SqlCommand();
        com.Connection = con;
        com.CommandText = string.Format("insert into users(user_name,password,sex,age,email,createDate) values('{0}','{1}','{2}','{3}','{4}','{5}')",txtName.Text.Trim(),txtPwd.Text.Trim(),rbFemale.Checked?"男":"女",txtAge.Text.Trim(),txtEmail.Text.Trim(),DateTime.Now.ToShortDateString());
        con.Open();
        com.ExecuteNonQuery();
        try {
            Response.Write("<script>alert('註冊成功')</script>");
            con.Close();
        }
        catch(Exception){
            Response.Write("<script>alert('資料庫無法連線')</script>");
            con.Close();
        }
        
    }
    來自大神部落格:https://www.cnblogs.com/yankyblogs/p/6870138.html