在做資料資料存取時,會使用到 SqlCommand 這個類別,當中與它互相搭配的其他方法,
像是SqlDataReader、ExecuteReader()、ExecuteNonQuery()等,各自代表著不同意思。
在SqlCommand類別中常使用的執行命令方法有幾個:
- ExecuteReader():執行傳回(查詢、抓取)資料列(紀錄)的命令。
- ExecuteNonQuery():執行(將異動的資料寫回資料庫)命令。
- ExecuteScalar():從資料庫中擷取(單一值),如T-SQL指令中的 Count()函數。
- Cancle():取消Sqlcommand的執行。
- Dispose():釋放Component 所使用的資源。
當我們要從資料庫(表)中讀取資料,並放置GridView中,如下寫法:
重點在 ExecuteReader(),
SqlConnection conn = new SqlConnection
(WebConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("select [columnname],[columnname1],[columnname2],[columnname3] from Table", conn);
SqlDataReader sdr = null;
conn.Open();
sdr = cmd.ExecuteReader();
GridView1.DataSource = sdr;
GridView1.DataBind();
if (sdr != null)
{
cmd.Cancel();
sdr.Close();
}
if (conn.State == ConnectionState.Open)
{
conn.Close();
conn.Dispose();
}
GridView1.Dispose();
當我們要對資料表的內容做新增、刪除、修改時,使用ExecuteNonQery()方法,例如:
(配合使用參數寫法,避免 SQL Injection 攻擊) ---- @符號+參數名稱
例如要增加新值的時候:
SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand(@"insert into test([columnname])
values (@name)", conn);
cmd.Parameters.Add("@name", SqlDbType.插入值的類型).Value = 插入值;
int count = cmd.ExecuteNonQuery();
Label3.Text = count ;
cmd.Cancel();
if (conn.State == ConnectionState.Open)
{
conn.Close();
conn.Dispose();
}
參考資料:.NET資料存取,ADO.NET+SqlDataSource+LINQ