當使用SqlDataSource控制項選擇資料時,可以從兩個屬性:ConnectionString和SelectCommand開始,如下所示:
<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>