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

如何以呼叫 SQL Server 使用 Visual Basic.NET 將程序儲存在 ASP.NET 中

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

按一下這裡查看此文章的英文版本:306574
這樣的 Microsoft Visual C#.NET 版本文件編號,請參閱 320916.
對於 Microsoft Visual J#.NET 版本的本文中,請參閱 320622.
這樣的 Microsoft Visual Basic 6.0 版本文件編號,請參閱 164485.
這樣的 Microsoft Visual Basic 6.0 版本文件編號,請參閱 300488.

在這項工作

結論
這份文件中,示範了如何使用 ASP.NET 和 ADO.NET若要建立並呼叫儲存 Microsoft SQL Server 的 Visual Basic.net使用輸入的參數和輸出參數的程序。

程式碼在這個範例文件第一個檢查是否就可以在預存程序建立存在於資料庫。如果預存程序不存在,程式碼建立會接受一個參數,若要搜尋的最後一個名稱為基礎在Authors資料表的預存程序並傳回符合的資料列,輸出參數中所傳回的資料列數目。

這份文件也將示範如何建立 Web 表單,提供簡單的使用者介面。Web 表單包含下列項目:
  • 使用者在其中輸入搜尋文字方塊中條件。
  • 顯示搜尋結果的DataGrid控制項。
  • 標籤控制項便會傳回記錄的數目。
  • 按鈕控制項的按鈕時呼叫預存程序按下。
back to the top

需求

以下概括列出建議的硬體的軟體,網路基礎結構和所需的 service pack:
  • Microsoft SQL Server 7.0 或更新版
  • Microsoft Visual Studio.NET
  • Microsoft Visual Basic.NET
  • 若要建立的預存程序的權限資料庫
本文假設您已熟悉下列主題:
  • SQL Server 預存程序
back to the top

建立一個 ASP.NET 專案並加入控制項

在本章節中,您可以建立一個 ASP.NET 專案和建置基本使用者介面。請注意這些步驟使用 Microsoft Visual Basic.NET程式碼。若要建立專案時,請依照下列步驟執行:
  1. 按一下 [開始,指向 [程式集、 指向 [ Microsoft Visual Studio.NET中,,然後按一下 [ Microsoft Visual Studio.NET
  2. 在 Visual Studio.NET 啟動頁面上,按一下 [新增專案
  3. 在 [新增專案] 對話方塊中,按一下 [專案類型] 下的 [ Visual Basic 專案,然後按一下 [範本] 下的 [ ASP.NET Web 應用程式
  4. 在 [名稱] 方塊中,輸入您的 Web 應用程式的名稱,然後按一下[確定]
  5. 將下列的伺服器控制項加入至 Web Form,並設定屬性表中列出:
    控制項ID 屬性Text 屬性
    標籤lblLastName輸入作者的姓氏:
    文字方塊txtLastName%
    按鈕btnGetAuthors取得作者
    標籤lblRowCount(列數)

  6. 將從工具箱] 中的DataGrid的伺服器控制項至 Web 表單,並設定名稱屬性 GrdAuthors.
  7. 方格中,以滑鼠右鍵按一下,然後按一下 [表格自動格式設定
  8. 按一下 [專業版 1配置,,然後按一下[確定]
back to the top

建立 GetAuthorsByLastName 預存程序

使用下列的異動性-SQL 程式碼建立GetAuthorsByLastName 預存程序:
Create Procedure GetAuthorsByLastName1 (@au_lname varchar(40), @RowCount int output)  as select * from authors where au_lname like @au_lname; /* @@ROWCOUNT returns the number of rows that are affected by the last statement. */ select @RowCount=@@ROWCOUNT				
這段程式碼包含兩個參數: @au_lname 和 @RowCount。的@au_lname 參數是輸入的參數,會取得搜尋字串搜尋"like" Authors資料表中。@RowCount 參數是使用輸出參數取得受影響的資料列的 @@ROWCOUNT 變數。

back to the top

建立和執行預存程序

若要存取 SQL Server 資料庫,您必須匯入System.Data.SqlClient命名空間中,提供新的物件,例如SqlDataReaderAdd物件。若要從 SQL Server 資料庫中讀取順向類型資料流的資料列,您可以使用SqlDataReader資料配接器會表示一組資料命令和資料庫連接,您可以使用填滿資料集物件,並更新 SQL Server 資料庫。

ADO.NET也會引入DataSet物件,也就是資料的記憶體常駐表示,提供的一致、 關聯式程式設計模型,而不論資料來源。本章節中的程式碼會使用這些物件。
  1. 按兩下 Web 表單。
  2. 將下列程式碼加入至 [宣告] 區段的程式Web Form,它會顯示在視窗頂端的程式碼:
    Imports System.DataImports System.Data.SqlClient					
  3. 請確認存在的預存程序並建立新的預存程序的sql 命令的使用與SqlDataReader物件的物件。若要對資料庫執行任何 SQL 命令,您可以使用sql 命令。然後呼叫ExecuteReader方法以傳回SqlDataReader,其中包含符合查詢的資料列的sql 命令

    新增下列的 Web Form 的Page_Load事件裡的程式碼:
    'Only run this code the first time the page is loaded.'The code inside the IF statement is skipped when you resubmit the page.If Not IsPostBack Then    Dim MyConnection As SqlConnection    Dim MyCommand As SqlCommand    Dim MyDataReader As SqlDataReader    'Create a Connection object.    MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")    'Create a Command object, and then set the connection.    'The following SQL statements check whether a GetAuthorsByLastName stored procedure     'already exists.    MyCommand = New SqlCommand("if object_id('pubs..GetAuthorsByLastName') is not null " + "begin" + " if objectproperty(object_id('pubs..GetAuthorsByLastName'), 'IsProcedure')= 1" + " select object_id('pubs..GetAuthorsByLastName')" + " else" + " return " + "end" + " else" + " return", MyConnection)    With MyCommand        'Set the command type that you will run.        .CommandType = CommandType.Text        'Open the connection.        .Connection.Open()        'Run the SQL statement, and then get the returned rows to the DataReader.        MyDataReader = .ExecuteReader()        'If any rows are retuned, the stored procedure that you are trying         'to create already exists. Therefore, try to create the stored procedure        'only if it does not exist.        If Not MyDataReader.Read() Then            .CommandText = "create procedure GetAuthorsByLastName (@au_lname varchar(40), " & _                             "@RowCount int output) " & _                             " as select * from authors where au_lname like @au_lname; select @RowCount=@@ROWCOUNT"            MyDataReader.Close()            .ExecuteNonQuery()        Else            MyDataReader.Close()        End If        .Dispose()  'Dispose of the Command object.        MyConnection.Close() 'Close the connection.    End WithEnd If					
  4. 在 [ btnGetAuthors ] 按鈕的Click事件中呼叫預存程序,然後使用Add物件來執行預存程序。您必須建立參數預存程序並將它附加至的Add物件的參數集合。

    Page_Load事件之後,加入下列程式碼:
    Private Sub btnGetAuthors_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGetAuthors.Click    Dim DS As DataSet    Dim MyConnection As SqlConnection    Dim MyDataAdapter As SqlDataAdapter    'Create a connection to the SQL Server.    MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")    'Create a DataAdapter, and then provide the name of the stored procedure.    MyDataAdapter = New SqlDataAdapter("GetAuthorsByLastName", MyConnection)    'Set the command type as StoredProcedure.    MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure    'Create and add a parameter to Parameters collection for the stored procedure.    MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@au_lname", _   SqlDbType.VarChar, 40))    'Assign the search value to the parameter.    MyDataAdapter.SelectCommand.Parameters("@au_lname").Value = Trim(txtLastName.Text)    'Create and add an output parameter to Parameters collection.     MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@RowCount", _    SqlDbType.Int, 4))    'Set the direction for the parameter. This parameter returns the Rows returned.    MyDataAdapter.SelectCommand.Parameters("@RowCount").Direction = ParameterDirection.Output    DS = New DataSet() 'Create a new DataSet to hold the records.    MyDataAdapter.Fill(DS, "AuthorsByLastName") 'Fill the DataSet with the rows returned.    'Get the number of rows returned, and then assign it to the Label control.    'lblRowCount.Text = DS.Tables(0).Rows.Count().ToString() & " Rows Found!"    lblRowCount.Text = MyDataAdapter.SelectCommand.Parameters(1).Value & " Rows Found!"    'Set the data source for the DataGrid as the DataSet that holds the rows.    Grdauthors.DataSource = DS.Tables("AuthorsByLastName").DefaultView    'Bind the DataSet to the DataGrid.     'NOTE: If you do not call this method, the DataGrid is not displayed!    Grdauthors.DataBind()    MyDataAdapter.Dispose() 'Dispose of the DataAdapter.    MyConnection.Close() 'Close the connection.End Sub					
  5. 在 [方案總管中以滑鼠右鍵按一下.aspx 網頁,然後再按一下 設定為起始頁.
  6. 儲存專案,然後再按一下 [Visual Studio.NET 中的 [啟動。請注意編譯專案,確認預設的網頁就會執行。
  7. 在文字方塊中,輸入作者的姓氏,再按一下取得作者。請注意會呼叫預存程序,並傳回資料列會填入DataGrid

    您可以提供這類的 SQL Server 的型別搜尋字串G %它會傳回所有作者的最後一個名稱,開始以字母 「 G 」。
back to the top

疑難排解

  • 如果您無法連線到資料庫,請確定連接字串正確地指向執行 SQL server伺服器。
  • 如果您可以連接至資料庫,但如果您遇到問題,當您嘗試建立預存程序,請確定您有正確的權限的資料庫中建立預存程序您正在連線。
back to the top
参考
如需詳細資訊,請參閱下列主題Microsoft.NET Framework 軟體開發套件 (SDK) 文件: 如需詳細資訊,請參閱下列書籍:
Wyke、 Allen R,蘇丹 Rehman 和李明俐 Leupen。 XML 程式設計 (核心參考).微軟出版品,2001年。
如需詳細資訊,請參閱下列 Microsoft 訓練 &憑證課程: 如需說明如何執行這項工作,藉由使用 [Microsoft 動態伺服器網頁,按一下 [下面的文件編號,檢視 「 Microsoft 中知識庫:
300488 如何執行 SQL 中,預存程序,從 ASP 網頁
back to the top

警告:本文為自動翻譯

內容

文章識別碼:306574 - 最後檢閱時間:12/27/2012 21:09:00 - 修訂: 8.0

Microsoft ASP.NET 1.0, Microsoft ASP.NET 1.1, Microsoft ADO.NET 1.1, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic .NET 2003 Standard Edition

  • kbhowtomaster kbsqlclient kbsystemdata kbmt KB306574 KbMtzh
意見反應
eateElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">