以 ADO.NET 來做 SQL 的資料存取時,可以使用 DataReader、 DataAdapter 的方法來做。
在 <.NET資料存取,ADO.NET+SqlDataSource+LINQ> 一書中有提到關於 DB(資料庫) 連結的四大步驟:
- 連結資料庫
- 執行SQL指令
- 自由發揮(做SQL指令的相關動作)
- 釋放資源,關閉資料庫
下面範例我以 SQL DataReader 的方法來做 有關資料的查詢、新增(修改)、刪除
在前端的頁面(.aspx)我們放一個 GridView 來作為與資料庫連結,呈現資料的畫面,
在後端(.aspx.cs)則撰寫相關的程式碼:
- 查詢的部分
首先 先做撰寫連結資料庫的動作:
SqlConnection Conn = new SqlConnection
(WebConfigurationManager.ConnectionStrings["資料庫名稱"].ConnectionString);
SqlDataReader dr = null;
SqlCommand cmd = new SqlCommand("select 欄位名稱 from 資料表", Conn);
一、連結資料庫:
conn.open();
二、執行 SQL 指令
dr = cmd.ExecuteReader(); //執行SQL指令,取出資料
三、自由發揮(撰寫資料庫指令執行的部分):
GridView1.DataSource = dr;
GridView1.DataBind(); //資料繫結
四、釋放資源,關閉資料庫的連結:
cmd.Cancel(); //關閉DataReader之前,一定要先「取消」SqlCommand
dr.Close();
Conn.Close();
Conn.Dispose();
- 新增/刪除的部分
差別在執行SQL指令的部分,在一開始連結資料庫,抓取資料時,會使用
SqlCommand 來下抓取資料的指令,如上方一開始所寫的,若是要做新增(Insert)或是刪除(Delete)
的話,可以將裡面的指令做修改,並將"值"(參數)帶入,達到資料的修改。
(刪除)
SqlCommand cmd = new SqlCommand("delete from test where id =@id", conn);
cmd.Parameters.Add("@id", SqlDbType.Int, 4).Value=123;
dr=cmd.ExecuteNonQuery();
(新增)
SqlCommand cmd = new SqlCommand("Insert Into test(欄位名稱) Values(@對應的參數值)", conn);
cmd.Parameters.Add("@對應的參數值", SqlDbType.DateTime, 10).Value=DateTime.Now.ToShortDateString();
dr=cmd.ExecuteNonQuery();
接著我以 SQL DataAdapter 的方法來做 有關資料的查詢、新增(修改)、刪除
使用 SQL DataAdapter 的法時,會搭配 DataSet() 以及 .Fill() 的方法來做存取
SqlConnection conn = new SqlConnection
(ConfigurationManager.ConnectionStrings["資料庫"].ConnectionString);
DataSet ds = new DataSet();
SqlDataAdapter sdr = new SqlDataAdapter();
sdr.SelectCommand = new SqlCommand("Select * from test", conn); //執行SQ指令
u_Adapter.Fill(ds, "test"); //取出資料,放進 DataSet。
//一個 DataSet 裡面可以有許多的 DataTable
adr.InsertCommand = new SqlCommand("INSERT INTO [資料表](欄位名稱) VALUES (@參數值)", conn);
adr.InsertCommand.Parameters.Add("@參數值", SqlDbType.NVarChar, 50).Value=對應的值;
adr.Fill(ds,"test"); //把 DataSet裡面的新資料,回寫到資料庫!