您目前已離線,請等候您的網際網路重新連線

如何: 建立,並藉由使用 Visual C#.NET 中使用具型別資料集

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:320714
結論
本文將告訴您,如何建立及在小型的 Web 應用程式中使用具型別的 資料集。型別 資料集,可繼承 資料集] 類別建立一個 DataSetDataTablesDataColumns,產生許多好處隨附的強型別使用的優先成員。

back to the top

需求

下列項目描述建議的硬體、 軟體、 網路基礎結構、 技能和知識及您必須擁有以完成這些步驟的 Service Pack:
  • Microsoft SQL Server 6.5 版 (或更新版本) 與北風資料庫
先前所需的技術:
  • Microsoft SQL Server 的一般熟悉
  • Microsoft Visual Studio.NET 的一般熟悉
  • Microsoft ADO.NET 的一般熟悉
  • Microsoft.NET Web 控制項的一般熟悉
back to the top

型別資料集

請依照下列步驟使用 Visual Studio.NET 建立小型的 Web 應用程式。Web 應用程式會使用具型別的 資料集,在北風貿易資料庫中顯示 improvised SQL 查詢的結果。
  1. 啟動 Visual Studio.NET。
  2. 建立新的 Web 應用程式專案,名為 TDS Visual C#.NET 中。
  3. 請確定顯示 [方案總管]。如果不會顯示 [方案總管] 中按下 CTRL + ALT + L。
  4. 請確定 WebForm1.aspx 檔案已開啟,在 [編輯器] 視窗中。如果檔案不是開啟的按兩下 WebForm1.aspx 在 [方案總管] 中開啟該檔案。
  5. 在 [編輯器] 視窗下按一下 [設計] 以切換至 [設計] 檢視]。
  6. 若要開啟 [工具箱中按下 CTRL + ALT + X]。在工具箱按一下 Web Form。選取並將下列拖曳至位於頁面的左上角: 兩列每個標籤,後面接著 (定位的每一個標籤右邊) 的文字方塊。在這些,請在相同的方式中加入 DataGrid
  7. 按一下頂端的標籤。按 F4 顯示 [屬性] 視窗。將 文字] 屬性 變更為 產品。按一下 [其他標籤] 類別 來變更它的 Text 屬性
  8. 若要將新的 資料集 加入至專案,按下 CTRL + SHIFT + A,然後按一下 [範本清單中的 [資料集]。下列名稱 的資料集dsProducts.xsd。請注意該檔案實際上 XML 結構描述。按一下 [確定]。現在,您會看到 [編輯器] 視窗中的一個淡黃色頁面。
  9. 若要建立具型別的 資料集,請按 CTRL + ALT + S 以開啟 [伺服器總管]。
  10. 按一下 [伺服器],按一下 [computer name、 按一下 SQLServers、 按一下 server name、 按一下 [北風,然後再按一下 [檢視
  11. 選取北風 SQL Server 檢視 依字母排列產品清單,然後拖曳至淡黃色的 [資料集] 頁的 [[] 檢視。以視覺的結果集所產生的檢視會出現在頁面上。若要讓實際的 XML 結構描述檔按一下 [編輯器] 視窗下的 [XML 按鈕]。
  12. 現在根據 SQL Server 物件的結構描述存在。建立,並填入具型別的 資料集 首先您必須產生對應到 「 結構描述的類別。用滑鼠右鍵按一下 [設計] 檢視,並確定選取了 [產生資料集] 選項。若它不選取請將之選取。按下 CTRL + S 鍵來儲存 「 結構描述並產生類別。
  13. 若要檢視新的具型別 資料集 類別,按一下 [顯示所有檔案 在 [在方案總管] 中]。
  14. 展開旁邊 dsProducts.xsd 樹狀目錄。您會看到包含新的類別對應結構描述的 dsProducts.vb 檔案。您也會看到用來追蹤檔案的變更的 dsProducts.xsx 檔案。
  15. 若要撰寫程式碼,以顯示具型別的 資料集,按兩下 Web 表單 (不在 Web 控制項中) 上直接的。此時會出現 Web Form 程式碼後置,而插入點是在 Page_Load 事件內。
  16. 要放在 System.Data.SqlClient 命名空間中的類別將下列 using 陳述式加入程式碼後置頂端:
    using System.Data.SqlClient;					
    注意: 當您在 Visual Studio.NET 中建立 Web 應用程式時您必須擁有這個小型的 Web 應用程式的其他一命名空間自動在專案中參考。

  17. Page_Load 事件程序中建立連線物件藉由將連接字串傳遞給 SqlConnection 類別的預設建構函式:
    SqlConnection cn = new SqlConnection("server=myserver;uid=myuid;pwd=mypassword;database=northwind");					
  18. 建立 SqlCommand 物件,然後傳遞至 SqlDataAdapter 物件。將 improvised 的 SQL 陳述式和新的連線物件傳遞至 SqlCommand 建構函式。前者設定 CommandText 屬性的新 SqlCommand 物件。您也可以傳遞預存程序名稱
    SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);					
  19. 建立 SqlDataAdapter 物件將新的 SqlCommand 物件傳遞至建構函式的執行個體:
    SqlDataAdapter da = new SqlDataAdapter(cmd);					
  20. 現在,您建立連接至資料庫,並傳回的資料所需的物件。下列是具型別 資料集 的程式碼。請注意建立 dsProducts 類別的執行個體: 類別來將對應至 dsProducts 結構描述,並繼承自 資料集 類別不泛用 資料集 類別本身
    dsProducts tds = new dsProducts();					
  21. 呼叫 填滿 [SqlDataAdapter 具型別 DataSet 物件中傳遞的方法以及在 資料集 輸入 DataTable 的表格名稱 屬性:
    da.Fill(tds, tds.Tables[0].TableName);					
  22. 若要強型別中具型別的 資料集資料表 的資料行設定 Text 屬性的文字] 方塊中的控制項,使用下列格式:
    dsProducts.DataTableName[RowIndex].ColumnName						
    如這個範例應用程式 [RowIndex 是硬式編碼為 5:
    TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName; 						
    由於載入頁面時,資料列 集合是以零起始,請注意文字方塊控制項在 DataGrid 第六列中顯示產品和分類名稱的項目。
  23. 若要顯示的所有結果中 DataGrid,將 DataGrid] 的 [資料來源] 屬性設定為新具型別 資料集,],然後呼叫 DataBind()
    DataGrid1.DataSource = tds;DataGrid1.DataBind();					
back to the top

完成 (WebForm1.aspx) 程式碼範例的程式碼

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TDS.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML><HEAD>	<title>WebForm1</title>	<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">	<meta name="CODE_LANGUAGE" Content="C#">	<meta name="vs_defaultClientScript" content="JavaScript">	<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"></HEAD><body MS_POSITIONING="GridLayout">	<form id="Form1" method="post" runat="server">		<asp:Label id="Label1"  runat="server" >Label</asp:Label>		<asp:DataGrid id="DataGrid1"  runat="server" ></asp:DataGrid>		<asp:TextBox id="TextBox2"  runat="server"></asp:TextBox>		<asp:TextBox id="TextBox1"  runat="server"></asp:TextBox>		<asp:Label id="Label2"  runat="server" >Label</asp:Label>	</form></body></HTML>				
back to the top

完成 (WebForm1.aspx.cs) 程式碼範例的程式碼

using System.Data.SqlClient;namespace TDS{  /// <summary>  /// Summary description for WebForm1.  /// </summary>  public class WebForm1 : System.Web.UI.Page  {    protected System.Web.UI.WebControls.Label Label1;    protected System.Web.UI.WebControls.Label Label2;    protected System.Web.UI.WebControls.TextBox TextBox1;    protected System.Web.UI.WebControls.TextBox TextBox2;    protected System.Web.UI.WebControls.DataGrid DataGrid1;	    private void Page_Load(object sender, System.EventArgs e)     {	SqlConnection cn = new SqlConnection("server=localhost;uid=sa;pwd=abcd;database=northwind");	SqlCommand cmd = new SqlCommand("select * from [Alphabetical list of products]", cn);	SqlDataAdapter da = new SqlDataAdapter(cmd);	dsProducts tds = new dsProducts();	da.Fill(tds, tds.Tables[0].TableName);	TextBox1.Text = tds.Alphabetical_list_of_products[5].ProductName;	TextBox2.Text = tds.Alphabetical_list_of_products[5].CategoryName;          DataGrid1.DataSource = tds;	DataGrid1.DataBind();    }    #region Web Form Designer generated code    override protected void OnInit(EventArgs e)    {	// 	// CODEGEN: This call is required by the ASP.NET Web Form Designer.	// 	InitializeComponent();	base.OnInit(e);    }		    /// <summary>    /// Required method for Designer support - do not modify    /// the contents of this method with the code editor.    /// </summary>    private void InitializeComponent()    {    	this.TextBox1.TextChanged += new System.EventHandler(this.TextBox1_TextChanged);	this.Load += new System.EventHandler(this.Page_Load);    }    #endregion  }}				
back to the top

驗證

按下 F5 以執行 Web 應用程式。瀏覽器會在 產品 文字方塊和產品 類別 的 [文字] 方塊中顯示"Uncle 鮑伯有機 Dried 梨子"。產品資訊以填滿的 DataGrid 會出現在 [文字] 方塊下方。

back to the top

疑難排解

  • 泛用 資料集 並不需要您傳遞 的表格名稱,當您呼叫 Fill 方法。型別 資料集,但是,需要這,即使您正在存取該 資料集資料表 集合來代替 的表格名稱 的索引。失敗傳遞具型別的 資料集表格名稱 會在執行階段擲回一個 「 有是沒有列在位置 0 」 的錯誤。具型別 資料集 也表示您不能組成您自己 的表格名稱,但您必須傳遞的具型別 資料集 類別,在上述程式碼中存取中參考的這項需求。
  • 如果您變更資料庫物件,您最初用來產生結構描述和型別 資料集 類別並將它再次拖曳到結構描述的 [設計] 檢視,則會覆寫您對所產生的 Visual Studio.NET 結構描述進行任何手動變更。最好一般而言,使您必須在 Microsoft SQL Server 層級的變更,並產生新具型別的 資料集 比若要變更結果的結構描述。
back to the top
参考
更多有關使用具型別 資料集 的資訊,請參閱下列 Microsoft 網站:

back to the top

警告:本文為自動翻譯

內容

文章識別碼:320714 - 最後檢閱時間:05/17/2007 03:50:48 - 修訂: 2.3

Microsoft ADO.NET (included with the .NET Framework), Microsoft ADO.NET 1.1, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 標準版

  • kbmt kbhowtomaster KB320714 KbMtzh
意見反應
te = "76500"; var Ctrl = ""; document.write("