對(duì)于許多專(zhuān)業(yè)開(kāi)發(fā)人員而言,Visual Studio 2003 和 SQL Server 2000 無(wú)疑是為企業(yè)創(chuàng)建解決方案的極佳組合。然而,對(duì)于小規(guī)模應(yīng)用程序,許多開(kāi)發(fā)人員更看重腳本語(yǔ)言的簡(jiǎn)單易用,而不是面向?qū)ο笳Z(yǔ)言的健壯性和代碼重用優(yōu)勢(shì)。這些開(kāi)發(fā)人員通常使用 Visual Basic 6、傳統(tǒng)的 ASP 和 Microsoft Access 創(chuàng)建數(shù)據(jù)庫(kù)解決方案。這阻礙了 .NET 技術(shù)的推廣。即使提供免費(fèi)版本的 SQL Server 和 MSDE,也不足以有效地替代 Microsoft Access。為了加快小規(guī)模應(yīng)用程序接受 .NET SQL Server 技術(shù)的進(jìn)程,Microsoft 即將發(fā)布一個(gè)新的產(chǎn)品線,稱(chēng)為 Express 套件。Express 套件被設(shè)計(jì)為具有可快速下載、相對(duì)便宜,而且容易學(xué)習(xí)的特性。如果 Express 套件能夠成功吸引目前采用腳本語(yǔ)言的廣大非企業(yè)開(kāi)發(fā)人員,它就可以顯著地?cái)U(kuò)大整個(gè) .NET 市場(chǎng),并簡(jiǎn)化非企業(yè)開(kāi)發(fā)人員創(chuàng)建的解決方案向?qū)I(yè)開(kāi)發(fā)人員管理的企業(yè)解決方案轉(zhuǎn)換的過(guò)程。本文首先介紹 Express 套件所包含的三個(gè)主要產(chǎn)品的社區(qū)技術(shù)預(yù)覽版:Visual Basic Express、Visual Web Developer Express 和 SQL Server Express。Express 套件的最終版本預(yù)期在下半年發(fā)布。 Express 套件介紹 Express 套件提供簡(jiǎn)化和低價(jià)版本的 Visual Basic .NET、C#、C++ 和 J#,它們可以為 .NET Framework 2.0 創(chuàng)建解決方案??梢詫?Express 套件看作是入門(mén)級(jí)的 Visual Studio 2005 版本。 Express 套件還有一個(gè)稱(chēng)為 Visual Web Developer Express 的 Web 開(kāi)發(fā)工具,通過(guò)這一工具,可以使用 Visual Basic .NET 或 C# 語(yǔ)言來(lái)創(chuàng)建 ASP.NET .0 解決方案。它與該套件的另一個(gè)成員 SQL Server Express 配合使用。SQL Server Express 與 SQL Server 有一定的關(guān)系,類(lèi)似于 MSDE 與 SQL Server 2000 之間的關(guān)系。SQL Server Express 是免費(fèi)的,它提供 SQL Server 所提供的絕大部分技術(shù),但對(duì)您用它構(gòu)建的解決方案的大小有些限制。您可以從網(wǎng)址是 http://lab.msdn.Microsoft.com/express 的 Express 套件站點(diǎn)開(kāi)始了解關(guān)于任何組件的詳細(xì)信息。 Express 套件滿(mǎn)足許多典型開(kāi)發(fā)環(huán)境的核心需要。開(kāi)發(fā)人員可以使用 Visual Basic Express 和其他 Express 套件來(lái)為他們的自身教育、小型商務(wù),甚至大型商務(wù)中的一個(gè)部門(mén)構(gòu)建應(yīng)用程序。因?yàn)檫@些解決方案是在 .NET Framework 的 2.0 版本上構(gòu)建的,并且可能融入了 SQL Server 2005 技術(shù),所以如果有這樣的需求,它們很容易被企業(yè)開(kāi)發(fā)人員所采納。這種便于升級(jí)的能力為組織中的部門(mén)解決方案或個(gè)體小型商務(wù)解決方案增加了價(jià)值,促使其成為整個(gè)行業(yè)的縱向應(yīng)用程序。 創(chuàng)建數(shù)據(jù)庫(kù) SQL Server Express 自帶創(chuàng)建新數(shù)據(jù)庫(kù)的向?qū)?,但如果您使用的?Visual Basic Express 或 Visual Web Developer Express,您可能更傾向于使用在這些環(huán)境中直接可用的數(shù)據(jù)庫(kù)創(chuàng)建向?qū)?。這兩個(gè)向?qū)У牟僮鞑煌?,但默認(rèn)操作都是在方便的位置存儲(chǔ)一個(gè)數(shù)據(jù)庫(kù)文件,以便應(yīng)用程序創(chuàng)建該數(shù)據(jù)庫(kù)。 使用 Visual Basic Express 要在 Visual Basic Express 中新建一個(gè)數(shù)據(jù)庫(kù),首先啟動(dòng)一個(gè)新項(xiàng)目或者打開(kāi)現(xiàn)有項(xiàng)目。右鍵單擊 Solution Explorer 中的項(xiàng)目名稱(chēng),選擇“Add | New Item”。在“Add New Item”對(duì)話框中選擇 Blank Database 模板??梢越邮苣J(rèn)的數(shù)據(jù)庫(kù)名稱(chēng),也可以指定一個(gè)新名稱(chēng),然后單擊“Add”。該向?qū)⑼ㄟ^(guò)提示信息提醒您,計(jì)算機(jī)需要安裝 SQL Server 版本 9 才能使數(shù)據(jù)庫(kù)文件正常工作。這個(gè)過(guò)程會(huì)在項(xiàng)目的根文件夾中添加一個(gè)擴(kuò)展名為 .mdf 的新數(shù)據(jù)庫(kù)文件。 只有當(dāng)您準(zhǔn)備關(guān)閉項(xiàng)目時(shí),Visual Basic Express 項(xiàng)目文件夾才會(huì)提交。當(dāng)您選擇關(guān)閉項(xiàng)目時(shí),Visual Basic Express 會(huì)詢(xún)問(wèn)您保存或放棄更改。對(duì)于新項(xiàng)目,選擇放棄更改會(huì)放棄整個(gè)項(xiàng)目,包括它的數(shù)據(jù)庫(kù)。對(duì)于現(xiàn)有項(xiàng)目,放棄更改就會(huì)放棄自上次保存項(xiàng)目文件以來(lái)的任何更改。對(duì)于每種情況,當(dāng)這些更改中包含您希望保存的、由 Visual Basic Express 數(shù)據(jù)庫(kù)創(chuàng)建向?qū)傻臄?shù)據(jù)庫(kù)文件時(shí),請(qǐng)確保保存所有更改。 ![]() 圖 1顯示 vsdvbe1 項(xiàng)目的 Save Project 對(duì)話框。后臺(tái)的 Solution Explorer 包含一個(gè)文件名為 vsdvbe1sse.mdf 的數(shù)據(jù)庫(kù)圖標(biāo)。請(qǐng)注意,Save Project 對(duì)話框設(shè)置為將項(xiàng)目文件夾存儲(chǔ)在 C:\Articles 文件夾中。單擊該對(duì)話框中的“Save”將會(huì)在 C:\Articles 文件夾中添加一個(gè) vsdvbe1 文件夾。在 vsdvbe1 文件夾中有另外一個(gè)名稱(chēng)與之相同的文件夾,它將作為項(xiàng)目的根文件夾。vsdvbe1sse.mdf 文件就保存在這個(gè)二級(jí)嵌套的文件夾中。 采用Visual Web Developer Express 打開(kāi) Visual Web Developer Express 之后,通常為新項(xiàng)目啟動(dòng)一個(gè)新的 Web 站點(diǎn)。默認(rèn)情況下,Visual Web Developer Express 將新 Web 站點(diǎn)文件夾建在 C:\WebSites 文件夾中。以這種方式打開(kāi)的新 Web 站點(diǎn)會(huì)包含一個(gè) Data 文件夾,項(xiàng)目的 Solution Explorer 將顯示該文件夾。要在 Data 文件夾中為當(dāng)前項(xiàng)目新建一個(gè)數(shù)據(jù)庫(kù),請(qǐng)右鍵單擊 Solution Explorer 中的該 Data 文件夾,選擇“Add | New Item”。在“Add New Item”對(duì)話框中,選擇 Database 模板,可以接受默認(rèn)的數(shù)據(jù)庫(kù)名稱(chēng),也可以定義一個(gè)新名稱(chēng)。與 Visual Basic Express 不同,Visual Web Developer Express 會(huì)在您處理項(xiàng)目時(shí)保存項(xiàng)目文件夾及其內(nèi)容。不需要單擊“Save Project”對(duì)話框中的“Save”來(lái)保存項(xiàng)目文件。 本文的示例 Visual Web Developer Express 項(xiàng)目名為 vsdvwde1,它在 C:\WebSites 中創(chuàng)建一個(gè)具有相同名稱(chēng)的文件夾。vsdvwde1 項(xiàng)目的示例數(shù)據(jù)庫(kù)文件名稱(chēng)為 vsdvwde1sse.mdf,保存在 vsdvwde1 Web 站點(diǎn)文件夾的 Data 文件夾中。實(shí)際上,Visual Web Developer Express 在 Data 文件夾中還創(chuàng)建了第二個(gè)文件,名為 vsdvwde1sse _log.ldf。這第二個(gè)文件保存數(shù)據(jù)庫(kù)文件的日志。Visual Basic Express 也為它新建的每個(gè)數(shù)據(jù)庫(kù)文件創(chuàng)建一個(gè)日志文件。 ![]() 圖 2 顯示 vsdvwde1 項(xiàng)目的 Solution Explorer。請(qǐng)注意 Data 文件夾中的數(shù)據(jù)庫(kù)文件,以及與該數(shù)據(jù)庫(kù)文件相關(guān)的日志文件。 創(chuàng)建和填充表 Visual Basic Express 和 Visual Web Developer Express 共享創(chuàng)建和填充表的通用圖形用戶(hù)界面。您可以從 Database Explorer 手動(dòng)創(chuàng)建、填充和編輯表的設(shè)計(jì)和值。在本文介紹的社區(qū)技術(shù)預(yù)覽版中,可以通過(guò)選擇 Visual Web Developer Express 中的 View | Database Explorer 或 Visual Basic Express 中的 View | Server Explorer 來(lái)打開(kāi) Database Explorer。 向 Database Explorer 添加一個(gè)連接 如果 Database Explorer 不包含您要向其添加表的數(shù)據(jù)庫(kù)連接,則必須添加一個(gè)到該數(shù)據(jù)庫(kù)的連接,以便 Database Explorer 有該數(shù)據(jù)庫(kù)的 Tables 圖標(biāo)。右鍵單擊 Database Explorer 中的 Data Connections 來(lái)添加新的數(shù)據(jù)庫(kù)連接,并選擇“Add Connection”,打開(kāi)“Connection Properties”對(duì)話框。這個(gè)對(duì)話框與 Microsoft 在早期產(chǎn)品中為許多類(lèi)似任務(wù)提供的 Data Link Properties 對(duì)話框非常相似。 通過(guò)以下步驟指定到 vsdvwde1sse.mdf 數(shù)據(jù)庫(kù)文件的連接: 1. 在“Connection Properties”對(duì)話框的“Provider”視圖中,確認(rèn)選擇了 .NET Framework Data Provider for SQL Server。 2. 切換回“Connection”視圖,以完成連接規(guī)范。 3. 在標(biāo)記為 Select 的組合框中,選擇或鍵入一個(gè)服務(wù)器名稱(chēng)。如果您使用默認(rèn)指定的實(shí)例,則可以指定 \SQLEXPRESS。如果計(jì)算機(jī)中的 SQL Server Express 是默認(rèn)實(shí)例,而不是指定實(shí)例,則可以輸入 XPRESS。您也可以打開(kāi)組合框,選擇任意廣播其名稱(chēng)的 SQL Server 實(shí)例。 4. 除非您在安裝時(shí)更改 SQL Server Express 的默認(rèn)身份驗(yàn)證設(shè)置,否則選擇標(biāo)題為“UseWindowsNT Integrated Security”的單選按鈕。當(dāng)然,您需要以具有一定權(quán)限的用戶(hù)身份登錄到 Windows,從而在 SQL Server Express 數(shù)據(jù)庫(kù)中創(chuàng)建表。安裝 SQL Server Express 的計(jì)算機(jī)管理員自然具有這種權(quán)限。 5. 將數(shù)據(jù)庫(kù)指定為數(shù)據(jù)庫(kù)的 .mdf 文件的路徑和文件名。對(duì)于在 vsdvwde1 項(xiàng)目中創(chuàng)建的數(shù)據(jù)庫(kù)文件,路徑和文件定為 C:\WebSites\vsdvwde1\Data\vsdvwde1sse.mdf。您可以從標(biāo)題為“Select or enter a database name”的單選按鈕下面的下拉框選擇此文件和路徑。另外,也可以使用對(duì)話框中的 Browse 按鈕導(dǎo)航至要連接的數(shù)據(jù)庫(kù)文件。單擊標(biāo)題為“Attach a database file as a file name”的單選按鈕可以啟用該 Browse 按鈕。 當(dāng)您按照這些步驟操作時(shí),會(huì)彈出 Connection Properties 對(duì)話框來(lái)設(shè)置到 vsdvwde1sse.mdf 文件的連接,如圖 3 所示。 ![]() 單擊“OK”將連接添加到 Database Explorer 中的 Data Connections 集合。請(qǐng)注意,您指定的是一個(gè)數(shù)據(jù)庫(kù)文件,而不是將數(shù)據(jù)庫(kù)文件附加到服務(wù)器實(shí)例的數(shù)據(jù)庫(kù)名稱(chēng)。SQL Server Express 數(shù)據(jù)庫(kù)文件類(lèi)似于 Jet .mdb 文件,因?yàn)槟梢栽谶\(yùn)行時(shí)動(dòng)態(tài)連接它們,而文件不會(huì)始終由服務(wù)器實(shí)例管理。 創(chuàng)建表 要在數(shù)據(jù)庫(kù)中創(chuàng)建表,請(qǐng)首先展開(kāi) Database Explorer 中的 Data Connections,顯示出要在其中創(chuàng)建表的數(shù)據(jù)庫(kù)的連接。然后,右鍵單擊目標(biāo)數(shù)據(jù)庫(kù)中的“Tables”,選擇“Add New Table”。這些操作會(huì)打開(kāi)一個(gè)選項(xiàng)卡式窗口,讓您以圖形方式指定表。該選項(xiàng)卡式窗口有兩個(gè)窗格。上面的窗格用于指定主要的列屬性,即列名稱(chēng)、數(shù)據(jù)類(lèi)型以及列是否允許空值。右鍵單擊上面窗格中任意表列的行,可以指定其他列功能,包括列是否作為主鍵或者列是否檢查約束。下面的窗格讓您細(xì)化和添加在上面窗格中為當(dāng)前選定列指定的列屬性。例如,如果您在上面的窗格中為一列選擇 int 數(shù)據(jù)類(lèi)型或其他任何整數(shù)數(shù)據(jù)類(lèi)型,則可以在下面的窗格中為該列指定 Identity 屬性。 ![]() 圖 4 顯示用于設(shè)計(jì)聯(lián)系人數(shù)據(jù)表的選項(xiàng)卡式窗口。所有的基本列屬性都已指定。例如,所有列都有一個(gè)數(shù)據(jù)類(lèi)型,而且 ContactID 列還有一個(gè) Identity 屬性顯示在下面的窗格中。在頂部的窗格中,ContactID 列的右鍵單擊菜單有 Set Primary Key 選項(xiàng)。單擊此選項(xiàng)將該列作為表的主鍵。單擊“Standard”工具欄上的“Save”工具,將打開(kāi)一個(gè)對(duì)話框,在其中您可以接受默認(rèn)的表名稱(chēng),也可以為該表指定一個(gè)自定義表名稱(chēng),例如 Contacts。上述步驟也適用于在 vsdvbe1sse.mdf 文件中創(chuàng)建 Contacts 表。 填充表 在向數(shù)據(jù)庫(kù)添加新表之后,您可以手動(dòng)在表中填充數(shù)據(jù)。對(duì)于要在其中添加表的數(shù)據(jù)庫(kù),表名稱(chēng)會(huì)出現(xiàn)在 Tables 集合的 Database Explorer 中。右鍵單擊該表的名稱(chēng)(例如 Contacts),并選擇 Show Table Data。此選擇將打開(kāi)以該表的名稱(chēng)命名的選項(xiàng)卡式窗口。窗口中是列標(biāo)頭,它含有空白行上方表中的列名稱(chēng)。這個(gè)最初的空白行在第一列左邊的邊界處含有一個(gè)星號(hào)。在鍵入一行列值后,星號(hào)會(huì)標(biāo)記出新的最后一行,在其中可以鍵入其他行的列值。 ![]() 圖 5 顯示 vsdvwde1sse.mdf 數(shù)據(jù)庫(kù)中的 Contacts 表,它有兩行聯(lián)系人數(shù)據(jù)。vsdvbe1sse.mdf 數(shù)據(jù)庫(kù)中的 Contacts 表也有這兩行數(shù)據(jù)。 連接和使用數(shù)據(jù)庫(kù) 在本地計(jì)算機(jī)上創(chuàng)建數(shù)據(jù)庫(kù),并在數(shù)據(jù)庫(kù)中填充對(duì)象和值之后,通常是要允許其他計(jì)算機(jī)的用戶(hù)連接到該數(shù)據(jù)庫(kù)。有兩種操作可以實(shí)現(xiàn)這個(gè)目標(biāo)。首先,需要配置 SQL Server Express 實(shí)例以偵聽(tīng)對(duì)它的連接??梢允褂?Computer Manager(一個(gè)隨 SQL Server Express 安裝的圖形化工具)來(lái)配置 SQL Server Express 實(shí)例,以及使用命令行指令來(lái)管理 SQL Server Express。在配置 SQL Server Express 實(shí)例的連接性之后,通常以編程方式或圖形化方式連接到 SQL Server Express 數(shù)據(jù)庫(kù)以顯示數(shù)據(jù)或管理該數(shù)據(jù)庫(kù)。我將在下面兩小節(jié)中討論這兩個(gè)步驟。 配置網(wǎng)絡(luò)連接性 默認(rèn)情況下,SQL Server Express 安裝在一臺(tái)計(jì)算機(jī)上,所以其他計(jì)算機(jī)無(wú)法連接上它。具體而言,SQL Server Express 不會(huì)自動(dòng)偵聽(tīng)來(lái)自其他計(jì)算機(jī)的連接。這是一個(gè)安全措施:如果不需要與另一臺(tái)計(jì)算機(jī)相連接,那么您的數(shù)據(jù)庫(kù)自身就不公開(kāi)以避免黑客的潛在攻擊。這種安全優(yōu)勢(shì)的負(fù)面影響是,如果您確實(shí)需要它,就不得不啟用連接性。對(duì)于 SQL Server Express 實(shí)例,在默認(rèn)安裝下甚至連舊式客戶(hù)端(例如,本地 計(jì)算機(jī)中的 Visual Studio 2003)都不能連接。您可以通過(guò)啟用協(xié)議和啟動(dòng) SQLBrowser 服務(wù)來(lái)啟用到 SQL Server Express 實(shí)例的連接性。 首先,必須通過(guò) Computer Manager 啟用命名管道和 TCP/IP 協(xié)議。從 Windows Start 按鈕啟動(dòng) Computer Manager,方法是從“All Programs | Microsoft SQL Server”組選擇 SQL Computer Manager。連續(xù)展開(kāi)用于 SQLEXPRES 的 SServer Network Configuration 和協(xié)議。通過(guò)右鍵單擊用于 SQLEXPRESS 的協(xié)議中的 Np 和 TCP 項(xiàng),選擇 Enable 項(xiàng)。必須重啟 SQL Server Express 實(shí)例才能使菜單選擇生效。您可以通過(guò) Computer Manager 中的 Services 實(shí)現(xiàn)這一點(diǎn),步驟如下: 1. 展開(kāi) Services。 2. 雙擊 SQL Server。 3. 在右側(cè)窗格中,右鍵單擊 SQLEXPRESS 條目。 4. 在右鍵單擊菜單中選擇“Restart”。 在啟用協(xié)議之后,需要啟動(dòng) SQLBrowser 服務(wù)??梢杂靡韵聝蓚€(gè)命令行指令來(lái)啟動(dòng)和停止此服務(wù)。每當(dāng)重啟運(yùn)行 SQL Server Express 實(shí)例的計(jì)算機(jī)時(shí),都需要重啟 SQLBrowser 服務(wù),但命名管道和 TCP/IP 協(xié)議的啟用狀態(tài)可以保持到您禁用它們?yōu)橹埂? net start sqlbrowser 在 Visual Basic Express 和 Visual Web Developer Express 中編程實(shí)現(xiàn)到數(shù)據(jù)庫(kù)的連接與采用 Visual Studio 2003 實(shí)現(xiàn)相同任務(wù)非常類(lèi)似。首先,實(shí)例化一個(gè) SqlConnection 實(shí)例,并對(duì) ConnectionString 屬性賦值,指向要打開(kāi)的數(shù)據(jù)庫(kù)。然后調(diào)用 SqlConnection 實(shí)例的 Open 方法。當(dāng)您不再需要該數(shù)據(jù)庫(kù)連接時(shí),應(yīng)該調(diào)用 SqlConnection 實(shí)例的 Close 方法。 SQL Server Express 有一個(gè)特色是 XCopy 數(shù)據(jù)庫(kù)部署,它意味著客戶(hù)端應(yīng)用程序(例如 Visual Basic Express 項(xiàng)目)可以在運(yùn)行時(shí)動(dòng)態(tài)附加數(shù)據(jù)庫(kù)文件,然后在應(yīng)用程序關(guān)閉時(shí)釋放該數(shù)據(jù)庫(kù)文件。這與 SQL Server 的早期版本,甚至與 SQL Server 都有著顯著的不同,后兩者不斷管理它們的數(shù)據(jù)庫(kù)文件,不管客戶(hù)端應(yīng)用程序是否需要它們。由于有了 XCopy 部署,您可以為 SQL Server Express 數(shù)據(jù)庫(kù)使用與其他 SQL Server 版本不同的連接字符串,甚至為其他版本的 SQL Server 使用這樣的連接字符串。 在 Express 套件客戶(hù)端應(yīng)用程序中,通常用 AttachDBFileName 參數(shù)來(lái)為連接字符串指定數(shù)據(jù)庫(kù)文件名和路徑。Database 或 Initial Catalog 參數(shù)的使用是可選的。如果您在連接字符串中將 Database 和 Initial Catalog 參數(shù)與 AttachDBFileName 參數(shù)一起使用,則不必為該 Database 或 Initial Catalog 參數(shù)賦值。對(duì)于指向 vsdvbe1sse.mdf 數(shù)據(jù)庫(kù)文件的連接字符串,正確的 AttachDBFileName 參數(shù)值是 C:\Articles\vsdvbe1\vsdvbe1\ vsdvbe1sse.mdf。 SQL Server Express 也支持不斷附加數(shù)據(jù)庫(kù),這對(duì) SQL Server 來(lái)說(shuō)更典型。SQL Server Express 安裝過(guò)程將 master.mdf 數(shù)據(jù)庫(kù)文件附加到它安裝的實(shí)例上。您也可以使用 T-SQL 技術(shù)(例如 sp_attach_db 系統(tǒng)存儲(chǔ)過(guò)程)來(lái)附加任何數(shù)據(jù)庫(kù)文件,以不斷受 SQL Server Express 實(shí)例管理。當(dāng)使用一個(gè)已附加的數(shù)據(jù)庫(kù)文件時(shí),請(qǐng)?jiān)谶B接字符串中使用 Database 或 Initial Catalog 參數(shù)來(lái)表示數(shù)據(jù)庫(kù),而不使用 AttachDBFileName 參數(shù)。 下面的代碼摘錄演示了一種連接到 SQL Server Express 數(shù)據(jù)庫(kù)的方法。這段代碼適用于 Visual Basic Express,但同樣的方法也適用于 Visual Web Developer Express。該示例對(duì) vsdvbe2 項(xiàng)目中的 Form1 上的 Button1 使用 Click 事件過(guò)程,以此連接到 vsdvbe1sse.mdf 數(shù)據(jù)庫(kù)文件。由于 Button2 的 Click 事件過(guò)程對(duì) vsdvwde1sse.mdf 文件執(zhí)行相同的任務(wù),所以應(yīng)用程序使用 CNN 類(lèi)來(lái)允許重用兩個(gè) Click 事件過(guò)程需要的公共代碼。通過(guò)這種方式,我在項(xiàng)目中添加了對(duì) System.Data 命名空間的引用,因?yàn)?Visual Basic Express 不會(huì)自動(dòng)添加該引用。另外,F(xiàn)orm1 模塊包含一條 Imports 語(yǔ)句,以便 System.Data.SqlClient 命名空間簡(jiǎn)化引用 SqlClient 類(lèi)型(例如 System.Data.SqlClient 命名空間中的 SqlConnection 類(lèi))的語(yǔ)法。 對(duì)于表示 SqlConnection 實(shí)例的變量 (cnn1),CNN 類(lèi)包含兩個(gè)方法和一個(gè)公共聲明。用于變量聲明的 Public 關(guān)鍵字使得 cnn1 在 CNN 類(lèi)實(shí)例外可用。MakeCNN 方法為 cnn1 指定連接字符串,并返回 SqlConnection 類(lèi)實(shí)例。該方法帶有兩個(gè)參數(shù):一個(gè)指定到數(shù)據(jù)庫(kù)文件的路徑,另一個(gè)是數(shù)據(jù)庫(kù)文件的名稱(chēng),包括其擴(kuò)展名。 Public cnn1 As New SqlConnection Public Function OpenCnn( _ strPath= "C:\Articles\" & _ 以編程方式從遠(yuǎn)程計(jì)算機(jī)打開(kāi)數(shù)據(jù)庫(kù) 以編程方式從另一臺(tái)計(jì)算機(jī)打開(kāi)和使用 SQL Server Express 數(shù)據(jù)庫(kù)基于并結(jié)合了本文前面介紹的技術(shù)。另外,此任務(wù)需要新元素 — 即,登錄到 SQL Server 實(shí)例(SQL Server Express 數(shù)據(jù)庫(kù)中的一個(gè)用戶(hù)帳戶(hù)),并且授予該用戶(hù)帳戶(hù)一個(gè)或多個(gè)數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限。本文前面的所有演示和示例都隱式使用 Windows 管理員帳戶(hù)。本節(jié)顯式使用非 Windows 管理員帳戶(hù)的 Windows 帳戶(hù)。雖然您在 SQL Server Express 中既可以使用 Windows 帳戶(hù)也可以使用 SQL Server 帳戶(hù),但 Microsoft 明顯希望我們使用 Windows 帳戶(hù)。實(shí)際上,SQL Server Express 默認(rèn)安裝時(shí)只有 Windows 身份驗(yàn)證,它拒絕任何非 Windows 用戶(hù)的訪問(wèn)。 由于 SQL Server Express 的默認(rèn)身份驗(yàn)證,您至少需要?jiǎng)?chuàng)建一個(gè)域 Windows 帳戶(hù),以便來(lái)自遠(yuǎn)程計(jì)算機(jī)的用戶(hù)可以使用該帳戶(hù)連接到運(yùn)行 SQL Server Express 的計(jì)算機(jī)。您還需要為 SQL Server Express 實(shí)例授予 Windows 用戶(hù)登錄權(quán)限。接下來(lái),需要在數(shù)據(jù)庫(kù)中為您創(chuàng)建的登錄創(chuàng)建一個(gè)用戶(hù)。最后一步是分配權(quán)限,例如為與您的 Windows 用戶(hù)登錄相關(guān)的用戶(hù)帳戶(hù)分配對(duì)一張表的 SELECT 權(quán)限。在進(jìn)行完最后這步設(shè)置后,您就可以用您的 Windows 用戶(hù)帳戶(hù)登錄到遠(yuǎn)程計(jì)算機(jī)。接下來(lái)就能夠以正常方式從遠(yuǎn)程計(jì)算機(jī)的客戶(hù)端應(yīng)用程序連接到運(yùn)行 SQL Server Express 的計(jì)算機(jī)。 vsdvbe2 項(xiàng)目中的 Form1 包含帶有 Click 事件過(guò)程的 Button3、Button4 和 Button5,從而幫助您測(cè)試這些從遠(yuǎn)程計(jì)算機(jī)連接到 SQL Server Express 數(shù)據(jù)庫(kù)的指南。Click 事件過(guò)程假設(shè)有一個(gè)名為 vsd1 的 Windows 帳戶(hù)。 Button3 的 Click 事件過(guò)程設(shè)置為允許 vsd1 Windows 用戶(hù)打開(kāi) vsdvbe1sse.mdf 數(shù)據(jù)庫(kù)中的 Contacts 表。 Button4 的 Click 事件過(guò)程刪除 vsd1 在 vsdvbe1sse.mdf 數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)用戶(hù)帳戶(hù),但該過(guò)程保留 vsd1 登錄到 SQL Server Express 實(shí)例的權(quán)限。Button5的 Click 事件過(guò)程禁用 vsd1 Windows 帳戶(hù)登錄到 SQL Server Express 實(shí)例的權(quán)限。 Button3 的 Click 事件過(guò)程有兩個(gè)部分。第一部分授予 vsd1 登錄到本地 SQL Server Express 實(shí)例的權(quán)限。第一部分通過(guò) master.mdf 數(shù)據(jù)庫(kù)上下文執(zhí)行。請(qǐng)注意,連接字符串語(yǔ)法與前面使用的連接字符串略有不同。master.mdf 數(shù)據(jù)庫(kù)是不斷附加的,因此可以由 Database 參數(shù)引用,該參數(shù)在引用數(shù)據(jù)庫(kù)時(shí)不需要數(shù)據(jù)庫(kù)文件擴(kuò)展名(使用 master 而不是 master.mdf)。 另外,在連接字符串中不需要使用 AttachDBFileName 參數(shù)。您可以通過(guò)調(diào)用 sp_grantlogin 系統(tǒng)存儲(chǔ)過(guò)程來(lái)為 SQL Server Express 實(shí)例分配 Windows 用戶(hù)帳戶(hù)登錄權(quán)限。該系統(tǒng)存儲(chǔ)過(guò)程需要一個(gè) Windows 帳戶(hù)名作為它的參數(shù)。該 Windows 帳戶(hù)名有兩個(gè)部分,它們之間以反斜杠 (\) 分隔。第一部分是域服務(wù)器名,第二部分是 Windows 帳戶(hù)名。 在下面的代碼中,cab233a 作為域名,vsd1 作為 Windows 帳戶(hù)名。這段代碼摘錄使用 SqlCommand 類(lèi)實(shí)例 (cmd1) 來(lái)包含該系統(tǒng)存儲(chǔ)過(guò)程。SqlCommand 對(duì)象的 ExecuteNonQuery 方法運(yùn)行該系統(tǒng)存儲(chǔ)過(guò)程。 strPath= "Data Source = .\sqlexpress;" & _ strPath= "C:\Articles\" & _ 我從兩臺(tái)遠(yuǎn)程計(jì)算機(jī),用三個(gè)不同的客戶(hù)端應(yīng)用程序(即 Visual Studio、Visual Studio 2003 和 Access)測(cè)試了這些過(guò)程。在運(yùn)行 Button3 的 Click 事件過(guò)程之后,就可以從遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的這三個(gè)應(yīng)用程序看到 vsdvbe1sse.mdf 數(shù)據(jù)庫(kù)的 Contacts 表中的數(shù)據(jù)。 ![]() 圖 6 顯示 Visual Studio 客戶(hù)端應(yīng)用程序中的 Contacts 數(shù)據(jù)。您可以在 Visual Studio 中用在 Visual Basic Express 中顯示表中數(shù)據(jù)的相同步驟來(lái)顯示表中的數(shù)據(jù)。這些步驟包括右鍵單擊 Database Explorer 中的表名稱(chēng),然后選擇 Show Table Data 項(xiàng)。 ![]() 圖 7 顯示來(lái)自 Access 項(xiàng)目的相同數(shù)據(jù)。這類(lèi)項(xiàng)目使用 OLE DB(而不是 .NET 數(shù)據(jù)訪問(wèn)技術(shù))來(lái)連接到 SQL Server Express 數(shù)據(jù)庫(kù)。從 Access 連接到 SQL Server Express 數(shù)據(jù)庫(kù)的方式與從早期 SQL Server 版本連接到任何數(shù)據(jù)庫(kù)的方式相同。在連接到數(shù)據(jù)庫(kù)之后,Contacts 表作為一個(gè)表出現(xiàn)在 Access Database 窗口中。雙擊 Database 窗口中的表名稱(chēng)將打開(kāi)表中的數(shù)據(jù),如圖 7 所示。 小結(jié) Express 套件以 Visual Studio 開(kāi)發(fā)人員所熟悉的格式提供大量數(shù)據(jù)庫(kù)功能。它提供一種學(xué)習(xí) Visual Studio/SQL Server 技術(shù)的低成本且便利的方式。即使 Express 套件官方發(fā)布之后,其組件也將提供一種成本相對(duì)較低的方式來(lái)在整個(gè)組織中推廣 .NET 和 SQL Server 技術(shù)。此策略的一個(gè)優(yōu)點(diǎn)是可以輕松地將部門(mén)解決方案遷移到企業(yè)解決方案。另外,您將發(fā)現(xiàn) Express 套件應(yīng)用程序很適合執(zhí)行您組織以前采用 Visual Studio 執(zhí)行的一些應(yīng)用程序,從而節(jié)省一些成本。 |
聯(lián)系客服