ASP.NET2.0數據庫入門之SqlDataSource
當使用SqlDataSource控件選擇數據時,可以從兩個屬性:ConnectionString和SelectCommand開始,如下所示:
當使用Windows認證時,可以添加兩個認證數據。
第一個是前面討論過的連接字符串,第二個是SelectCommand,用來確定將從SQL Server數據庫中提取什么信息。在SelectCommand中,可以使用任何符合語法的SQL SELECT語句,包括在上一章或者附錄A中討論的語句。很多SQL Server管理員都不會允許用戶直接訪問表。數據庫管理員將會在SPROC上創建一些受限制的許可。或者,創建表的視圖用來提供表的一部分數據或者對表中可以修改的數據進行限制。連接至視圖的語法如下:
如果表、查詢、SPROC或者視圖的名稱中有空格字符,則應當使用方括號將整個名稱包含起來,如下所示:
您可能已經注意到了GridView中的Filter屬性并且想知道它與在數據源SelectCommand中使用WHERE子句之間有何不同。篩選只用于某些緩沖情況,我們將會在第15章中介紹。
有了連接字符串和SelectCommand,就可以創建從SQL Server使用數據的頁面了。
試一試#1—— SqlDataSource簡單示例
在本練習中,應該以網格(表)格式從Northwind的SQL版本顯示產品的GridView。可以以添加DataSource控件和數據綁定控件的技術開始,這樣就能夠創建最簡單的源代碼。然后將會使用一種更快速的開發技術(拖放列名稱)。
(1) 請確認已經安裝了SSE(如第1章所述),包括樣本數據庫Northwind。本練習還將涉及到SQL Server或者MSDE。
(2) 創建文件夾ch03,在其中創建一個名為TIO-1-SqlSimple-1.ASPX的文件。通過Menu:View|Toolbox(Ctrl+Alt+X)顯示工具箱。請注意工具箱有一個可以展開的Data區域。
(3) 在Design視圖中,從工具箱的Data區域中拖放一個SqlDataSource控件至頁面。在便捷任務面板上,將數據源配置為新的連接。輸入服務器名稱(local)SQLExpress并使用Windows NT認證。選擇名為Northwind的數據庫并測試連接。單擊OK結束。您將會自動返回至Data Source Configuration對話框,單擊Next。對本例來說,不需要在配置文件中保存連接字符串;單擊Next。選擇“Specify columns from a table”并選擇表名Products。在Columns列表中,單擊ID、Name和Unit Price。單擊Next和Test Query,然后單擊Finish。這樣就完成添加DataSource控件了。
(4) 添加GridView數據綁定控件。在便捷任務面板中,選擇SqlDataSource,然后關閉便捷任務面板。這樣就創建了數據綁定控件。保存并運行頁面,頁面如下:
(5) 關閉瀏覽器并查看一下Source視圖中的頁面。請注意,在頁面的<form>中間有兩個控件。SqlDataSource有ConnectionString和SelectCommand。GridView具有一些與SqlDataSource控件的字段綁定的列。
(6) 現在可以使用快速的技術添加第二個表了。將頁面保存為TIO-1-SqlSim- ple-2.ASPX。切換至Design視圖。在菜單中,依次單擊View->Database Explorer。在Data Connections上單擊右鍵并選擇Add Connection。與上一步驟一樣,您將面對連接屬性對話框。輸入服務器名稱(local)SQLExpress,使用Windows NT安全,并選擇名為Northwind的數據庫。測試連接并單擊OK以關閉對話框。請注意在數據庫瀏覽窗口中的新項目。
(7) 展開新的(local)SqlExpress.Northwind.dbo連接,然后展開它的表。展開Categories表。使用Ctrl+單擊的方式選擇CategoryID、CategoryName和Description字段并將它們拖放至頁面的底部。雖然便捷任務面板將為您打開新的GridView,但是可以關閉它。鍵入F5來運行頁面。向下滾動欣賞您僅僅通過從Category表拖放列名就創建出來的頁面。以下是版本2的其他源代碼。請注意,當拖放列名的時候,您會得到一大組代碼,包括在SqlDataSource控件中的一系列參數。
示例說明#1—— SqlDataSource簡單示例
對語法來說,SqlDataSource與我們在第2章所使用的AccessDataSource相差無幾。最大的差別就是連接字符串的使用(而不是指定數據文件)。兩者相似的意義是對一種控件的知識可以幫助了解其他的數據源控件。
連接字符串向SqlDataSource傳遞了三個參數:
● SQL Server的名稱
● 將要使用的數據庫的名稱或者視圖的名稱
● 指示在隨后的SSE登錄中持續使用Windows認證
不論是對表還是視圖來說,如果其名稱中包含空格,就必須將名稱包括在方括號之中。第二個參數提供了一個符合標準SQL語法的選擇命令。
當我們轉移至版本2時,使用了VWD的完全功能。通過添加連接至Database Explorer,我們讓VWD明白數據庫的模式。VWD將會顯示表和列名。在拖放列名至頁面時,VWD將創建包含了支持的DataSource控件在內的GridView。
| <asp:SqlDataSource ID="MySourceControlName" Runat="server" ConnectionString="Server=MyServer ; Database=Northwind" SelectCommand=" SELECT Fieldl, [Field With Space] FROM MyTable"> </asp:SglDataSource> |
當使用Windows認證時,可以添加兩個認證數據。
| <asp:SqlDataSource ID="MySourceControlName" Runat="server" ConnectionString=" Server=MyServer ; User ID=MyID; Password=Mypass; Database=Northwind" SelectCommand=" SELECT Field1, [Field With Space] FROM MyTable"> </asp:SqlDataSource> |
第一個是前面討論過的連接字符串,第二個是SelectCommand,用來確定將從SQL Server數據庫中提取什么信息。在SelectCommand中,可以使用任何符合語法的SQL SELECT語句,包括在上一章或者附錄A中討論的語句。很多SQL Server管理員都不會允許用戶直接訪問表。數據庫管理員將會在SPROC上創建一些受限制的許可。或者,創建表的視圖用來提供表的一部分數據或者對表中可以修改的數據進行限制。連接至視圖的語法如下:
| SelectCommand="SELECT * from MyView"> |
如果表、查詢、SPROC或者視圖的名稱中有空格字符,則應當使用方括號將整個名稱包含起來,如下所示:
| SelectCommand="SELECT * from [My View] " |
您可能已經注意到了GridView中的Filter屬性并且想知道它與在數據源SelectCommand中使用WHERE子句之間有何不同。篩選只用于某些緩沖情況,我們將會在第15章中介紹。
有了連接字符串和SelectCommand,就可以創建從SQL Server使用數據的頁面了。
試一試#1—— SqlDataSource簡單示例
在本練習中,應該以網格(表)格式從Northwind的SQL版本顯示產品的GridView。可以以添加DataSource控件和數據綁定控件的技術開始,這樣就能夠創建最簡單的源代碼。然后將會使用一種更快速的開發技術(拖放列名稱)。
(1) 請確認已經安裝了SSE(如第1章所述),包括樣本數據庫Northwind。本練習還將涉及到SQL Server或者MSDE。
(2) 創建文件夾ch03,在其中創建一個名為TIO-1-SqlSimple-1.ASPX的文件。通過Menu:View|Toolbox(Ctrl+Alt+X)顯示工具箱。請注意工具箱有一個可以展開的Data區域。
(3) 在Design視圖中,從工具箱的Data區域中拖放一個SqlDataSource控件至頁面。在便捷任務面板上,將數據源配置為新的連接。輸入服務器名稱(local)SQLExpress并使用Windows NT認證。選擇名為Northwind的數據庫并測試連接。單擊OK結束。您將會自動返回至Data Source Configuration對話框,單擊Next。對本例來說,不需要在配置文件中保存連接字符串;單擊Next。選擇“Specify columns from a table”并選擇表名Products。在Columns列表中,單擊ID、Name和Unit Price。單擊Next和Test Query,然后單擊Finish。這樣就完成添加DataSource控件了。
(4) 添加GridView數據綁定控件。在便捷任務面板中,選擇SqlDataSource,然后關閉便捷任務面板。這樣就創建了數據綁定控件。保存并運行頁面,頁面如下:
| <%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtmlll/DTD/xhtmlll.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Ch03-Tio#l-SqlSimple-verl</title> </head> <body> <h2> Chapter 3 TIO #1 SqlSimple verl </h2> <form id="forml" runat="server"> <div> <asp:SqlDataSource ID="SqlDataSourcel" Runat="server" ProviderName="System.Data.SqlClient" ConnectionString="Server=(local)SQLExpress; Integrated Security=True; Database=Northwind; Persist Security Info=True" SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice] FROM[Products]"> </asp:SqlDataSource> <asp:GridView ID="GridViewl" Runat="server" DataSourceID="SqlDataSourcel" DataKeyNames="ProductID" AutoGenerateColumns="False"> <Columns> <asp:BoundField ReadOnly="True" HeaderText="ProductID" InsertVisible="False" DataField="ProductID" SortExpression=" ProductID" ></asp: BoundField> <asp:BoundField HeaderText="ProductName"DataField="ProductName" SortExpression="ProductName"></asp:BoundField> <asp:BoundField HeaderText="UnitPrice" DataField="UnitPrice" SortExpression="UnitPrice"></asp:BoundField> </Columns> </asp:GridView> </div> </form> </body> </html> |
(5) 關閉瀏覽器并查看一下Source視圖中的頁面。請注意,在頁面的<form>中間有兩個控件。SqlDataSource有ConnectionString和SelectCommand。GridView具有一些與SqlDataSource控件的字段綁定的列。
(6) 現在可以使用快速的技術添加第二個表了。將頁面保存為TIO-1-SqlSim- ple-2.ASPX。切換至Design視圖。在菜單中,依次單擊View->Database Explorer。在Data Connections上單擊右鍵并選擇Add Connection。與上一步驟一樣,您將面對連接屬性對話框。輸入服務器名稱(local)SQLExpress,使用Windows NT安全,并選擇名為Northwind的數據庫。測試連接并單擊OK以關閉對話框。請注意在數據庫瀏覽窗口中的新項目。
(7) 展開新的(local)SqlExpress.Northwind.dbo連接,然后展開它的表。展開Categories表。使用Ctrl+單擊的方式選擇CategoryID、CategoryName和Description字段并將它們拖放至頁面的底部。雖然便捷任務面板將為您打開新的GridView,但是可以關閉它。鍵入F5來運行頁面。向下滾動欣賞您僅僅通過從Category表拖放列名就創建出來的頁面。以下是版本2的其他源代碼。請注意,當拖放列名的時候,您會得到一大組代碼,包括在SqlDataSource控件中的一系列參數。
| ... <asp:SqlDataSource ID="SqlDataSourcel" Runat="server" <asp:GridView ID="GridViewl" Runat="server" ... <asp:GridView ID="GridView2" Runat="server" DataSourceID="SqlDataSource2" DataKeyNames="CategoryID" AutoGenerateColumns="False" EmptyDataText="There are no data records to display."> <Columns> <asp:BoundField ReadOnly="True" HeaderText="CategoryID" DataField="CategoryID" SortExpression="Category ID"></asp:BoundField> <asp:BoundField HeaderText="CategoryName"DataField="CategoryName" SortExpression="CategoryMame"></asp:BoundField> <asp:BoundField HeaderText="Description" DataField="Description" SortExpression="Description"></asp:BoundField> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource2" Runat="server" ProviderName="<%$ ConnectionStrings:AppConnectionString2 . ProviderName %>" ConnectionString="<%$ ConnectionStrings:AppConnectionString2 %>" SelectCommand="SELECT[CategoryID],[CategoryName] ,[Desc- ription] FROM [Categories]" UpdateCommand="UPDATE[Categories]SET[CategoryName]=@CategoryName, [Description] = @Description WHERE[CategoryID]=@original_CategoryID" InsertCommand="INSERT INTO[Categories]([CategoryName],[Description] VALUES (@CategoryName, @Description)" DeleteCommand="DELETE FROM [Categories] WHERE [CategoryID] = @original_CategoryID"> <DeleteParameters> <asp:Parameter Type="Int32" Name="CategoryID"></asp:Parameter> </DeleteParameters> <InsertParameters> <asp:Parameter Type="String"Name="CategoryName"></asp:Parameter> <asp: Parameter Type="String" Name="Description"></asp: Parameter> </InsertParameters> <UpdateParameters> <asp:Parameter Type="String" Name="CategoryName"></asp:Parameter> <asp:ParameterType="String" Name="Description"></asp:Parameter> <asp:Parameter Type="Int32"Name="CategoryID"></asp:Parameter> </UpdateParameters> </asp:SqlDataSource> |
示例說明#1—— SqlDataSource簡單示例
對語法來說,SqlDataSource與我們在第2章所使用的AccessDataSource相差無幾。最大的差別就是連接字符串的使用(而不是指定數據文件)。兩者相似的意義是對一種控件的知識可以幫助了解其他的數據源控件。
連接字符串向SqlDataSource傳遞了三個參數:
● SQL Server的名稱
● 將要使用的數據庫的名稱或者視圖的名稱
● 指示在隨后的SSE登錄中持續使用Windows認證
不論是對表還是視圖來說,如果其名稱中包含空格,就必須將名稱包括在方括號之中。第二個參數提供了一個符合標準SQL語法的選擇命令。
當我們轉移至版本2時,使用了VWD的完全功能。通過添加連接至Database Explorer,我們讓VWD明白數據庫的模式。VWD將會顯示表和列名。在拖放列名至頁面時,VWD將創建包含了支持的DataSource控件在內的GridView。
| 軟件頻道精品推薦 | |||
| | | |
| ![]() | | 更多精彩 |
