緣起:
蠻久之前就想寫這篇了,但後來在忙些有的沒的。那時候看公司的 SQL
資料庫,發現裡面有不少寫好的 procedure,使用起來很像程式的
function,可以傳參數進去,之後在裡面用 t-sql 做操作,還能在 asp 端使用
sqlcommand 來呼叫 procedure 使用,感覺把這個學起來的話會很有用。
在自己電腦上測試成功後,我想寫文章來記錄這東西大概怎麼用。
SQL Server 的 procedure:
之前有把 Northwind 資料表給弄進我筆電的 SQL Server
裡,Northwind 有現成的資料表跟 procedure
可以使用,所以就直接拿它來當範例。
可以在資料表的 "可程式性 -> 預存程式" 裡看到那些寫好的
procedure,這裡拿 dbo.CustOrderHist 來使用,對它點右鍵 -> 選擇 "修改"
就能看到它在寫些什麼。
這個 procedure 有傳入一個 @CustomerID 的參數,主要是用來比對
Customers 表裡的 CustomerID。
看一下Customers 表
可以正常執行並看到結果 ~~~
ASP Webconfig connectionStrings:
再來要寫 asp
的程式,新增一個 Webform 專案。在開始寫程式之前,我想複習 connectionStrings
的使用。
我把
<connectionStrings>
<add name="BirdshiuConnectionString"
connectionString="Data Source=LAPTOP-DB451NK0\SQLEXPRESS; Integrated
Security=SSPI;Initial Catalog= Northwind;"
providerName="System.Data.SqlClient" />
</connectionStrings>
加到專案 Web.config 的 <configuration>
標籤裡,在程式裡要取用的話,可以使用
ConfigurationManager.ConnectionStrings["BirdshiuConnectionString"].ConnectionString
來取得 connectionString (要加 using System.Configuration;)。
SqlConnection 與 SqlCommand:
這邊直接放上程式碼
18 行,拿到 connectionString。
20 行,用 connectionString 初始 SqlConnection 實體,用 using 可以自動開啟跟關閉資料庫。
22 行,初始一個 SqlCommand,第一個參數是我們要呼叫的 procedure。
23 行,Timeout,預設是 30 秒 (這邊我是照抄公司的寫法),單位看來是毫秒。
24 行,SqlCommand 的 Parameters 可以設定參數,AddWithValue 設定 @CustomerID = "ALFKI"。
27 ~ 29 行,用 SqlDataAdapter 來把執行完的結果寫進 DataSet。SqlDataAdapter.Fill 把資料寫進我們指定的 DataSet 裡,我把寫進去的 DataTable 命名為 test 。
30 行,從 dataSet 取出 test table
32 行,逐一取出資料表裡的資料,它有兩個欄位,一個是 "ProductName",另一個是 "Total",然後輸用 Response 出到前端。
最後開啟網頁,可以看到輸出的結果跟在 Sql Server Managemenet Studio 上看到的一樣
沒有留言:
張貼留言