面會有專門的章節來討論。而字串"datasource=localhost;initialcatalog=myDB;userid=sa;password=12345"含有四個參數設定,其作用是作資料庫連線所需的資訊,說明如下:#datasource=localhost是指定來源SQLServer伺服器的位置,如果是本機的話則用localhost或是一個點「.」的符號來表示;另外也可用IP或是主機名稱來指定。#initialcatalog=myDB是指定要使用這個SQLServer中的哪一個資料庫,而myDB是我們之前所建立的一個資料庫。#userid是指定與SQLServer連線所使用的帳號,在此是以sa帳號來做登入,但在SQLServer中sa帳號擁有最大權限,為了教學方便故使用sa帳號,在正式環境請另建一個帳號來替代,否則權限太大會有安全上的問題。#password則是userid所指定帳號的密碼。!conn.open()conn.open()則表示是將conn資料庫連線正式開啟,若只有定義SqlConnection而沒有開啟,是無法從這個連線讀到任何資料的。!SqlCommandSqlCommand是下達SQL語法或預儲程序(storeprocedure)的用途,可以將SQL語法定義在SqlCommand(字串,conn)的字串中,而字串後面接的conn就是指定要使用這個連線來執行SQL語法,連線是一定要指定的,否則電腦會不知要使用哪個連線。!SqlDataReaderSqlDataReader稱之為資料讀取器,其用於讀取資料,也就是SqlCommand中若使用select讀取資料的SQL語法就要搭配SqlDataReader。
6-4
ASP.NET資料庫存取技術I
!ExecuteReader()
6
I
如果SqlCommand中使用的是select的SQL語法就要搭配ExecuteReader(),這個方法來使用,ExecuteReader是由Execute與Reader二個單字所組成,前者是執行,後者是讀取器的意思,顧名思義select的SQL語法當然要和ExecuteReader()來做配對。!ExecuteNonQuery()當您使用insert、update或delete時,請和ExecuteNonQuery()做搭配,其NonQuery意思是非查詢,那除了select叫做查詢外,其他三個就是非查詢,所以ExecuteNonQuery()是和insert、update或delete來做搭配。!對於ExecuteReader()和ExecuteNonQuery()搭配使用時機請務必弄清楚,否則執行SQL命令時會產生錯誤。
只要知道每行程式是做什麼用的就可以了,不必將解說細節一一背起來,倒是固定語法一定要記起來,因為這就是ASP.NET資料庫的核心程式所在,所有的應用幾乎都是以這個資料庫存取語法做應用變化。範例6-1:以Select查詢資料庫資料本範例要利用Select語法,透過ADO.NET技術從資料庫讀取資料,並以DataGrid控制項將資料顯示出來。
!步驟一:新增專案
請在VS.NET開發工具中新增一個專案,選擇ASP.NETWEB應用程式,並命名為VC6-1。
!步驟二:版面配置1.如圖6-1所示,從【工具箱】中拖曳進一個DataGrid控制項,並拖放到適當位置。
6-5
!ASP.NET網頁設計與C#
圖6-1:拖曳控制項
2.
調整DataGrid控制項的大小及位置,如圖6-2。
圖6-2:設定DataGrid控制項
6-6
ASP.NET資料庫存取技術I3.設定DataGrid控制項的格式化
6
I
請點選DataGrid控制項,再點選【屬性視窗】下面的【自動格式化】,選擇您想要的格式來美化DataGrid,然後按【確定】按鈕結束,DataGrid控制項就會有個美麗的外觀(圖6-3)。
圖6-3:DataGrid控制項的格式化
!步驟三:建立程式碼
請點選【
方案總管】視窗中的WebForm1.aspx程式,按滑鼠右鍵選取【檢視程式碼】(圖6-4)。
6-7
!ASP.NET網頁設計與C#
圖6-4:檢視程式碼
之後會出現一個WebForm1.aspx.cs的程式碼後置檔案(圖6-5)。
圖6-5:程式碼後置檔案
6-8
ASP.NET資料庫存取技術I1.
6
I
先加入usingSystem.Data.SqlClient;命名空間,此段程式碼是手動寫SQLServer資料庫連線會用到的命名空間。
2.
這裡要在程式載入時,自動執行資料庫讀取及DataGrid顯示資料,請在Page_Load程式區塊內加入程式碼,程式碼如下:
privatevoidPage_Load(objectsender,System.EventArgse){//以SqlDataReaderdr來讀取资料SqlConnectionconn=newSqlConnection("datasource=localhost;initialcatalog=myDB;userid=sa;password=12345");conn.Open();SqlCommandcmd=newSqlCommand("select*fro