国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

ASP.NET2.0中的AccessDataSource控件

2019-11-18 17:09:42
字體:
供稿:網(wǎng)友
  asp.net 2.0包含了accessDataSource控件,用來從Access數(shù)據(jù)庫中將數(shù)據(jù)提取至ASP.NET 2.0(.aspx)頁面。這個控件擁有的屬性很簡單。AccessDataSource的最重要的屬性是DataFile屬性,用來指向硬盤上MDB文件的路徑。AccessDataSource擁有的其他屬性還有SelectCommand,用來設定一個顯示需要返回的結(jié)果集(表和列)的語句。SelectCommand必須使用SQL語法來定義。

  在VWD中,可以用兩種方式來添加AccessDataSource控件至頁面。如果MDB文件像前面的示例中那樣被添加至Database Explorer中,那么可以拖放列名稱至頁面上,而且VWD將會自動創(chuàng)建AccessDataSource控件和GridView來顯示數(shù)據(jù)。如果不想使用GridView或者想定制控件,那么可以只從工具框中添加AccessDataSource控件并通過配置向?qū)нM行安裝。向?qū)崾緸g覽查找數(shù)據(jù)文件,并且允許通過在數(shù)據(jù)庫的表中選擇列來指定SelectCommand。如果是在VWD之外輸入頁面的,那么可以按照如下所示代碼來輸入:

<asp:AccessDataSource>
ID="MySourcName"
Runat="server"
DataFile="MyMDBName.mdb"
SelectCommand="SELECT MyField1, MyField2 FROM MyTable">
</asp:AccessDataSource>

  需要再次提及的特性很簡單。您所要提供的就是一個ID、MDB文件名以及一個SelectCommand。

  本文講述的是關于數(shù)據(jù)源控件的內(nèi)容,但是回想起來數(shù)據(jù)源控件并不在頁面上呈現(xiàn)任何可見的東西。所以為了給您一個可見方式來測試數(shù)據(jù)源控件,下一個“試一試”將介紹使用GridView控件(從ASP.NET 1版本的DataGrid控件演變而來)在表格中顯示數(shù)據(jù)的基本步驟。請注意本章的重點不是在GridView的配置和定制上;在這樣的情況下,重點是在數(shù)據(jù)源控件上。在隨后的第5章中,將會更加詳細地研究GridView控件。

  試一試 #2—— 連接至MDB并用GridView顯示數(shù)據(jù)

  在本文事例,將通過頁面上的Northwind顯示已經(jīng)銷售出去的產(chǎn)品的信息。

  (1) 啟動頁面編輯器并瀏覽至C:/Websites/BegAspNet2Db/ch02/。

  (2) 從Web Form模板中添加名為TIO-ch02-2-DisplayAccessData的頁面。單擊下方的標簽切換至Design視圖。

  (3) 在頁面的頂部,輸入標題,例如“連接至MDB數(shù)據(jù)源的演示”,并將相同的文本放入頁面的標題中。雖然在每個練習中都沒有討論過這一步,但是我們建議在每一頁中都包含一個標題和HTML文本,這樣就不會找不到正在瀏覽的頁面了。

<html>
<head>
<title>TIO ch02-1 Display MDB Data</title>
<head>
<body>
<h3>ch02 TIO 2 Demonstration of connection to an MDB source </h3>
<body>
</html>

  (4) 顯示工具框(Menu:View|toolbox或者鍵入Ctrl+Alt+X)并展開工具框的Data面板。

  (5) 將一個AccessDataSource控件拖至頁面。

  (6) 控件的便捷任務面板應當自動出現(xiàn),如果面板沒有自動出現(xiàn),那么可以選擇新的數(shù)據(jù)源并單擊右上方的小箭頭來打開便捷任務面板。單擊Configure Data Source。

  (7) 在Choose a Database步驟,單擊Browse 按鈕并選擇C:/Websites/BegAspNet 2Db/App_Data/Northwind.mdb,并注意設計器將文件說明轉(zhuǎn)換為相對引用,也就是用符號(~)表示站點的根目錄。

  (8) 在Configure Select Statement對話框中,選擇Specify Columns選項并選擇PRoducts表。點選星號以選擇所有列。依次單擊Next、Test Query和Finish。

  (9) 選擇Data控件并通過按下F4顯示Properties窗口。將其ID更改為NorthwindProducts。

  (10) 回到工具箱的Data面板,在GridView上雙擊將控件添加至頁面并進入Common Tasks Menu,然后單擊Choose Data Source。選擇NorthwindProducts并結(jié)束向?qū)А?BR>
  (11) 選擇GridView并將其ID更改為NorthwindProducts。頁面應該如下所示:

<%@ page language="VB" %>
<html>
<head><title>ch02 TIO 2 Display MDB Data</title></head>
<body>
<h3>ch02 TIO 2 Demonstration of Connection to an MDB Source </h3>
<form runat="server">
<asp:accessdatasource id="NorthwindProductsAccDataSource" runat="server"
selectcommand="Select * From Products"
datafile="~/App_Data/Northwind.mdb">
</asp:accessdatasource>
<asp:gridview id="NorthwindProductsGridView" runat="server"
datasourceid="NorthwindProductsAccDataSource">
</asp:gridview>
</form></body></html>

  (12) 打開瀏覽器并查看C:/Websites/BegAspNet2Db/ch02/ch02_TIO_2_ Dis- playAccessData.aspx(參見圖2-2)。



圖 2-2

  (13) 最后的操作是從MDB Query而不是表中顯示數(shù)據(jù)。關閉瀏覽器并返回至VWD。用新名稱ch02_TIO_2_DisplayAccessData-Query.aspx保存文件。選擇GridView并通過單擊控件右上方的小箭頭來打開它的Common Task Menu。單擊Configure Data Source和Next跳過MDB文件的選擇。在Configure Select Statement的界面上,將名稱改為“銷售分類”并點選星號以獲得所有的字段。這個查詢使用JOIN將四個表結(jié)合在一起,限制在一個表中使用的記錄數(shù)并通過一些數(shù)據(jù)的分組和聚合操作來獲得總數(shù)。依次單擊Next、Test the Query和Finish。數(shù)據(jù)源控件應當像如下所示:

<asp:accessdatasource id="NorthwindProductsAccDataSource" runat="server"
selectcommand="Selcet * From [Sales by Category] "
Datafile="~/App_Data/Northwind.mdb">
</asp:accessdatasource>


  (14) 打開瀏覽器并查看頁面。

  示例說明 #2—— 連接至MDB并用GridView顯示數(shù)據(jù)

  您有兩個頁面上的控件。第一個是AccessDataSource,執(zhí)行連接ADO.NET對象的所有工作,而這些對象連接那些與MDB文件交互的JET引擎。第二個是GridView,用于獲取數(shù)據(jù)并將其格式轉(zhuǎn)化為頁面可以顯示的HTML格式。請注意給每個控件一個有意義的名稱(ID)非常重要。然后必須確定數(shù)據(jù)綁定控件(GridView)使用它的DataSourceID屬性來引用AccessDataSource的ID以便將AccessDataSource作為它的數(shù)據(jù)源。

  從查詢中顯示數(shù)據(jù)并不非常困難;在Access中可以不用表名稱而使用查詢名稱。這里有兩個說明。第一,如果表或者查詢的名稱中間有空格,那么必須用方括號將整個名稱括起來。第二,需要用戶輸入(例如,“指定年份的銷售”需要知道是哪一年)的查詢涉及到的技術(shù)不在本書的討論范圍之內(nèi)。

  完成前面幾個步驟之后,就可以在頁面上看到從AccessDataSource控件獲得的數(shù)據(jù)顯示了。后面的章節(jié)將詳細介紹GridView,但是本章還將繼續(xù)關注數(shù)據(jù)源控件。

  選擇語句中的變量

  當在VWD中創(chuàng)建一個數(shù)據(jù)源時,向?qū)笾付ㄐ枰@示的列或者要求創(chuàng)建一條定制的SQL語句。在前面的“試一試”中,簡單地選擇了幾個列??梢砸詭追N不同的方式來指定更復雜的SQL語句:

  ● 使用交互式的對話框

  ● 在AccessDataSource向?qū)?由控件中的Configure Data Source便捷任務調(diào)用)中輸入定制的SQL語句

  ● 在屬性網(wǎng)格中輸入語句

  ● 直接在Source視圖的標記中輸入語句

  對那些從單獨的表中返回一個或者多個列的簡單查詢來說,在Access DataSource向?qū)е羞x擇列是一個首選技術(shù),因為它減少了排版和語法所帶來的錯誤(請參見圖2-3) 。在這個向?qū)е?,可以從Name下拉列表中選擇表或者查詢的名稱。然后您可以通過選擇所有列(*)或者任一組列來選擇表或者查詢中需要的列。如果您單擊了Order By按鈕,那么您就可以在數(shù)據(jù)源中按照任何列來進行排序。如果第一個列有約束,那么將會使用在Then By中選擇的字段。在您從向?qū)е羞x擇選項的時候,請注意SelectCommand的實際SQL語法也同時顯示在一個只讀文本框中。



圖 2-3

  利用向?qū)е械腤HERE按鈕可以創(chuàng)建帶有參數(shù)的SQL語句,這部分內(nèi)容將會在第9章中介紹。現(xiàn)在,我們將跳過這個選擇,但是重要的是在部署之前您將使用這些將在本書后面討論的參數(shù)。在一個部署完成的站點中,要避免直接將用戶的輸入與SQL語句連接。忽略參數(shù)問題將會使站點暴露在SQL注入攻擊的危險之中。這種攻擊技術(shù)使用了從用戶輸入而來的假字符使得原來的SQL語句無效,然后用具有破壞性的語句取而代之。可以使用參數(shù)集合來發(fā)送用戶輸入至ADO.NET參數(shù)集合,這樣可以利用集合的功能減少SQL注入的問題。

  雖然Configure Data Source向?qū)Ь哂泻芏噙x項可以幫助快速地創(chuàng)建SQL語句,但是有些時候還是需要在標記的SelectCommand中直接輸入(或者修改)SQL語句。AccessDataSource向?qū)г试S進行這些操作。在選擇表、查詢和列的向?qū)ы撁嬷校梢赃x擇“Specify a custom SQL statement or stored procedure”的單選按鈕。在向?qū)ы撁嬷羞x擇這個選項之后單擊Next按鈕將進入另外一個頁面,可以直接在文本區(qū)域中輸入自定義的語句。還可以使用Visual Studio QueryBuilder來可視化地創(chuàng)建自定義語句,所使用的工具與Access QueryBuilder的非常相似。

  如果不想使用向?qū)?,那么可以選擇在AccessDataSource控件的屬性網(wǎng)格中輸入自定義的SQL語句,或者可以切換至Source視圖并在AccessDataSource控件標記的SelectCommand屬性中輸入語句。

  關于SQL有很多書籍(像本書一樣類型的還有Beginning SQL Programming,ISBN 1-861001-80-0) ,本書在附錄中提供了一個簡要的介紹。如果打算學習SQL語法,那么開始階段可以學習返回記錄的一部分(TOP和DISTINCT)的命令、重命名一個字段(AS)的語法,以及從兩個相關聯(lián)的表返回字段的技術(shù)(JOIN)。下面的練習將探究SQL語句中的一些變量。

  試一試 #3—— 更改AccessDataSource中的選擇語句
  
  在本練習中,將要從Northwind的Products表中顯示特定的列和特定的記錄。還將創(chuàng)建一個頁面用來顯示從查詢中獲得的數(shù)據(jù)。請注意在本練習中,選擇規(guī)則已經(jīng)在源代碼之中了。目前,還沒有將用戶輸入作為選項。

  (1) 在C:/Websites/BegAspNet2Db/ch02/中創(chuàng)建名為ch02_TIO_3_AlternateSelect- Commands.aspx的文件。

  (2) 以Northwind作為ID添加一個AccessDataSource控件并設置MDB為/App_Data/Northwind.mdb。在一系列對話框中,設置Select命令從Products表中獲取所有的字段( “name”=Products)。查看一下Source視圖并注意您所創(chuàng)建的語句,如下所示:

SELECT * FROM Products

  (3) 添加GridView,將ID設置為Northwind,將數(shù)據(jù)源設置為Northwind。如下所示是到目前為止整個頁面的樣子:

<%@ page language="VB" %>
<html>
<head runat="server">
<title>ch02 TIO 3 Alternate Select Conimands</title>
</head>
<body>
<h3>ch02 TIO 3 Alternate Select Coinmands</h3>
<form runat="server">
<asp:accessdatasource id="NorthwindAccDataSource" runat="server"
selectcommand="SELECT * FROM Products"
datafile=" ~/App_Data/Northwind.mdb" >
</asp:accessdatasource>
<asp:gridview id="GridViewl" runat="server"
datasourceid="NorthwindAccDataSource">
</asp:gridview>
</form>
</body>
</html>

  (4) 現(xiàn)在在瀏覽器中打開頁面,并注意如圖2-4所示的界面(在截圖中沒有顯示所有的列)。



圖 2-4

  (5) 回到Design視圖并選擇AccessDataSource(不是GridView)。打開它的便捷任務面板并單擊Configure Data Source。在Configure Select Stat ement窗口中,選擇“Specify a custom SQL statement”并單擊Next。在編輯器中修改SQL語句,如下所示:

SELECT * FROM [Products] WHERE (CategroyID=3)

  (6) 單擊Next并測試查詢。單擊OK關閉對話框。查看一下Source視圖中的頁面并注意如下代碼:

<asp:accessdatasource id="NorthwindAccDataSource" runat="server"
selectcommand="SELECT * FROM [Products] WHERE (CategoryID = 3) "
Datafile="~App_Data/Northwind.mdb">
</asp:accessdatasource>

  (7) 試著使用對話框來創(chuàng)建如下一些Select命令,也可以在Source視圖中輸入,或者兩者結(jié)合起來使用。

SELECT * FROM Products WHERE ProductID = 12
SELECT * FROM Products WHERE ProductName = 'Northwoods Cranberry Sauce'
SELECT * FROM Products WHERE ProductID <11
SELECT * FROM Products WHERE ProductID <11 ORDER BY ProductName Ascending
SELECT * FROM Products WHERE SupplierID = 6 OR SupplierID = 8
SELECT * FROM Products WHERE SupplierID = 24 AND UnitPrice > 10

  示例說明#3—— 更改AccessDataSource中的選擇語句

  在首先幾個步驟中,像前面一樣創(chuàng)建了一個AccessDataSource控件和GridView。但是隨后開始用Select語句進行試驗。通過復選框添加和刪除列是最直觀的。還可以在編輯器窗口中直接輸入(或者編輯)SQL語句。

  添加了WHERE子句用來限制從MDB文件中返回的記錄。如果列名沒有包含空格,那么可以省略方括號。如果在列名中包含了空格,那么就必須使用這些方括號。

  MDB文件位置中的變量

  MDB文件保存在硬盤中的各種物理位置上:與Web頁相同的文件夾、Web頁下的子文件夾或者機器中的其他文件夾等。在Visual Web Developer中,可以在設計器中經(jīng)常瀏覽這些文件,并且MDB文件的正確路徑也已經(jīng)輸入好了。但是,如果您打算輸入自己代碼的話,還需要遵循本節(jié)所介紹的語法。

  AccessDataSource控件的DataFile屬性包含的頁面路徑可以是完全限定的(例如以驅(qū)動器盤符開頭)也可以是相對于包含AccessDataSource的頁面的位置而指定的。路徑還可以是相對于應用程序的,即使用URL語法來引用路徑。這個語法將符號(~)替換為應用程序根目錄,比如:~/App_Data/produces.mdb。使用相對于應用程序的路徑可以更加容易地將頁面從一個位置移動到另外一個位置而不破壞對數(shù)據(jù)庫的引用,所以推薦在可能的時候都使用相對于應用程序的路徑。

  首先,我們來看完全限定路徑的語法,它包含了MDB文件的整個路徑,以文件所在的計算機驅(qū)動器的根目錄開頭:

<asp:accessdatasource . . .

datafile= "C:/WebSites/Webapplication/App_Data/MyMdb.mdb">

  雖然這個語法可以使用,但是它的不足之處就是降低了應用程序的可移植性。如果要移動這個應用程序至另外一臺機器上,那么驅(qū)動器或者文件的完全限定路徑就會不一樣,而且在每次移動頁面的時候,您都需要修改DataFile屬性。

  對完全限定路徑的一個改進就是使用相對路徑語法,它只需要指定與包含了AccessDataSource的頁面的完全限定路徑不相同的部分。下面是與頁面相同文件夾中數(shù)據(jù)庫文件的路徑語法,以相對路徑指定:

<asp:accessdatasource . . . datafile="MyMdb.mdb">

  因為頁面和MDB文件同處一個目錄,所以這些文件的路徑?jīng)]有區(qū)別;因此,只需要指定各自的文件名即可。如果MDB處于該文件夾的下一級或更多級目錄中,那么下面的語法與前面的非常類似。在這樣的情況下,只需要指定子文件夾名稱,再添加斜杠和MDF文件名:

<asp:accessdatasource . . . datafile="MyDaughterFolder/MyMdb.mdb">

  如果MDB文件處于頁面目錄的上級目錄中,那么也可以使用雙句點語法來指定當前位置的上一級目錄:

<asp:accessdatasource . . . datafile="../MyMdb.mdb">

  通過使用相對路徑語法,可以很容易地將應用程序從一個地方移動至另外一個地方而不用改變MDB文件的路徑。因為頁面和MDB文件總是形影不離(假如MDB文件是應用程序的一部分),所以這些文件的相對位置總是保存一致。但是,當打算在應用程序內(nèi)部移動路徑,例如將頁面移動至子目錄中,那將會發(fā)生什么呢?在這樣的情況下,頁面和MDB文件之間的相對位置發(fā)生了改變,那么相對路徑語法也就不正確了。

  應用程序相對語法解決了這個問題。此時,路徑總是相對于應用程序根目錄來指定的,而不是相對于頁面本身。根目錄表示為符號(~):

<asp:accessdatasource . . . datafile="~App_Data/MyMdb.mdb>

  現(xiàn)在可以容易地移動應用程序、或者在應用程序內(nèi)移動頁面而不用改變對數(shù)據(jù)庫的引用了。所以,應當在可能的時候都使用應用程序相對路徑。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 昭通市| 辛集市| 那曲县| 徐汇区| 寿宁县| 九龙城区| 清新县| 尖扎县| 托里县| 额尔古纳市| 南靖县| 安图县| 句容市| 蓬莱市| 山东省| 西丰县| 平遥县| 冕宁县| 松江区| 盐边县| 平阳县| 盐亭县| 岳普湖县| 扎兰屯市| 锦屏县| 和静县| 临泉县| 邵东县| 修水县| 古田县| 界首市| 盐山县| 鲁山县| 田阳县| 罗江县| 和龙市| 佛坪县| 安国市| 邓州市| 秦皇岛市| 冕宁县|