ASP.NET2.0資料庫入門之SQL Server

NO IMAGE

因為Access並不真正為高效能應用程式服務,所以一個希望有多個同時連線使用者的站點必須部署一個比Access更適合的資料來源。本文將講述如何從Microsoft SQL Server(一種企業級RDMS)中獲取資料。

SQL Server完全版包括了三個部分。第一個是引擎,用於實際組織資料以及針對命令響應進行讀取和寫入操作。第二個是開發人員的工具軟體包,用於對資料庫進行操作,例如Query Analyzer和Data Transformation Services。最後一個是用於管理資料的工具,包括備份程式和複製模式。

雖然完全版對大型企業來說有著不可估量的好處,但是很多開發人員並不需要整套工具。幸運的是,Microsoft提供了一個SQL Server引擎的免費版,叫做SQL Server Express(SSE)。儘管它具有一個使用T-SQL命令來匯入模式和資料的命令列工具(osql.exe),但是它還不包含在SQL Server完全版中具有的豐富圖形化的工具。不過,可以方便地使用Visual Studio或者Visual Web Developer來使用SSE開發資料庫。SSE有一個限制,即只處理本地的連線(不可能在Web伺服器之外的不同機器上執行SSE)。對於具有某些嗜好的人以及學生的Web站點來說,SSE是一個非常適合的選擇。可能會使用基於SQL Server 2000的MSDE,而SSE則基於SQL Server的Yukon版。

除非有另外特別的說明,這裡所介紹的所有技術均可應用於SQL Server的三種形式(完全版產品、SSE和MSDE),因此,通用術語SQL Server包含了這三種形式。

因為SSE只是一個引擎而並沒有內建的開發工具(到2004年),所以必須使用其他的工具來建立、修改或者填充資料庫。為此我們將要使用的主要工具是Visual Studio或者Visual Web Developer,其中提供了Database Explorer作為其介面的一部分。請注意Database Exporer可以更改本地資料庫中的資料和模式,但是它只能更改遠端資料庫中的資料(而不是結構)。在Visual Studio中,Database Explorer被稱為Server Explorer,因為它包括了一些處理非資料庫伺服器的附加功能。我們還將在本書的開端簡單地使用osql.exe命令列工具來匯入將在本書通篇使用的初始資料庫。修改資料庫結構的第三種方式是開啟Access,然後在SSE資料庫中連結一個外部表。

使用SQL Server需要熟悉一些詞彙。SQL Server安裝在一臺稱為伺服器(server)的機器上,並且可以通過其機器名來引用。如果SQL Server與請求軟體位於同一臺機器上,那麼這臺機器可以用(local)來引用。引擎可以在一臺機器上安裝多次,每一次安裝稱為一個例項(instance)。SSE安裝一個名為(local)\SQLExpress的例項。在一個例項內,可以建立資料庫(database)。資料庫有一些具有欄位(field)和記錄(record)的表(table)。資料庫還有供資料使用者使用的一組表、欄位和約束,稱為檢視(view)。儲存過程(stored procedures,SPROC)可以對資料執行任務。一個SQL Server例項自動安裝了一個使用者名稱為sa的賬戶,當對使用者使用SQL Server認證時,這個賬戶具有對所有物件進行所有動作的許可權。在使用Windows認證(也稱為混合認證)的時候,登入進Windows的使用者也同時登入進了SSE。

使用SQL Server資料庫之前的準備

花時間在研究資料庫上將減少您設計使用資料的頁面時的錯誤。在編寫使用SQL Server的頁面之前,請檢查您是否已掌握瞭如下幾類資訊:

· 伺服器、例項和資料庫名稱—— 確認伺服器名稱、例項和資料庫名稱的確切拼寫。如果在伺服器上只有一個完全版SQL Server的例項,那就不需要使用例項名了。但是即使在伺服器上只有一個SSE的例項,也必須用MyServer\SQLExpress來顯式地引用。請明確是將要測試實際資料還是測試資料庫的部署備份。

· 安全資訊—— 您需要知道您的使用者ID和密碼,以便對開發資料庫的訪問進行認證。同樣地,請檢查SSE是使用Windows認證還是SQL認證(第1章中的安裝曾說明SSE應該使用Windows認證)。

· 資料庫模式—— 理解資料庫的模式。獲得表和欄位名、自動生成或鎖定的欄位、相關性以及約束的確切拼寫。仔細注意物件名稱中的下劃線和空格。從資料庫管理員那裡查到是直接使用表還是使用檢視或者儲存過程(SPROC)。使用後者將可能需要特殊資料型別的引數。用來檢查這些後設資料的SQL語法羅列在本章的後面。

· 測試SQL語句(可選)—— 您可能會懷疑SQL語句的語法或者邏輯。您將會發現測試語句的有效方法是使用諸如SQL的Query Analyzer的開發工具,而不是在這些語句第一次出現在ASPX頁面上時才測試。

連線字串

AccessDataSource控制元件和SqlDataSource控制元件之間語法的主要區別在於使用資料庫的方式各異。對MDB來說,我們只需提供檔名和路徑名,而SqlDataSource則使用包含了伺服器名稱、資料庫名稱和登入資訊的連線字串名。連線字串的語法區別於我們在Visual Basic或者C#中所熟悉的語法,並且也是很多學生犯錯誤的原因。一個典型的連線字串如下:

ConnectionString=”Server=MyServer; Database=MyDatabase;User ID=MyID; Password=MyPass”

多行的連線字串的格式能夠提高可讀性,如下所示:

ConnectionString=”

Server=MyServer;

Database=MyDatabase;

User ID = MyID;

Password=MyPass”

首先,我們來討論語法。原始碼中整個字串處於雙引號之中。當在VWD的屬性視窗指定連線字串時,您不需要引號,VWD將會自動新增。在引號中間是一些格式如Criteria=value的成對資訊。分號將這些資訊分隔開。請注意,值不需要使用引號。同樣,請注意即使判句中包含空格(例如User ID),它們也不需要使用引號或者方括號。這種語法理解起來並不困難,但是因為與VB、C#和SQL語言不同,所以錯誤常常出現。現在讓我們花一點時間將這個字串分解開來。

在這個連線字串中有兩種值:資料庫識別符號(伺服器、例項和資料庫)和安全值(使用者ID、密碼和安裝設定)。資料庫識別符號以伺服器值開始,這個值是執行SQL Server的機器的網路名稱。(在XP中機器名稱的獲得可以通過Start->My Computer;單擊右鍵並選擇Properties->Computer Name tab->Full Computer Name。在Windows 2000中,可以在桌面的My Computer上單擊右鍵->Properties->Network Indentification)。如果知道資料庫伺服器與ASP.NET執行的Web 伺服器使用相同的機器,那麼還可以將伺服器名稱指定為(local)來表明伺服器就是ASP.NET頁面執行的本地機器。可以用Instance=MyInstance來新增例項。更一般的情況是,使用MyServer \My- Instance或者(local)\MyInstance來新增例項至伺服器名稱。可能還會看到使用句點(句號)來表示本地機器,例如.\SQLExpress。

在預設情況下,SSE安裝自己的例項。單獨引用(local)將導致失敗。必須使用(local)\SQLExpress來引用SSE。

安全設定將在本章稍後討論。現在,我們來了解Windows Authentication,使用屬性IntegratedTrusted_connection=true而不是使用者ID和密碼屬性。SQL認證需要兩個值:user=MyUserName;password=MyPassword,其中MyUserName和MyPassword將被您的證書代替。本文使用的是Windows認證。

如果您熟悉ASP早期版本,那麼也許對提供程式感到疑惑。SqlDataSource的預設提供程式是.NET Framework Data Provider for SQL Server。所以在本章中不需要指定提供程式。下一章將會討論為其他資料庫指定非預設的提供程式。

 

您可能感興趣的文章:

ASP.NET2.0快取(Cache)技術深入理解ASP.NET2.0中用Gridview控制元件運算元據的程式碼ASP.NET2.0 SQL Server資料庫連線詳解asp.net2.0實現郵件傳送(測試成功)在ASP.NET2.0中通過Gmail傳送郵件的程式碼ASP.NET2.0 SQL Server2005構建多層應用ASP.NET2.0:頁面中鏈入的CSS、js檔案帶中文時需注意ASP.NET2.0伺服器控制元件之自定義狀態管理ASP.NET2.0中資料來源控制元件之非同步資料訪問Asp.Net2.0許可權樹中Checkbox的操作ASP.Net2.0 GridView 多列排序,顯示排序圖示,分頁ASP.NET2.0伺服器控制元件之型別轉換器ASP.NET2.0資料庫入門之SqlDataSourceasp.net2.0如何加密資料庫聯接字串ASP.NET2.0新特性概述ASP.NET2.0 WebRource,開發微調按鈕控制元件ASP.NET2.0伺服器控制元件之Render方法asp.net2.0中css失效的解決方法