วิธีการเรียก SQL Server เก็บกระบวนงานใน ASP.NET โดยใช้ Visual Basic .NET

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 306574 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายเกี่ยวกับวิธีการใช้ ASP.NET และ ADO.NET ด้วย Visual Basic .NET เพื่อสร้าง และเรียก Microsoft SQL Server ที่เก็บไว้ กระบวนงานที่ มีพารามิเตอร์การป้อนข้อมูลและพารามิเตอร์การแสดงผล

รหัส ตัวอย่างในเรื่องนี้บทความแรกเช็คว่ากระบวนงานที่เก็บที่คุณจะ สร้างอยู่ในฐานข้อมูล ถ้ากระบวนงานเก็บไว้ไม่มีอยู่ รหัส สร้างกระบวนงานที่เก็บที่ใช้พารามิเตอร์การค้นหาตารางผู้เขียนยึดตามนามสกุลที่หนึ่ง และส่งกลับแถวตรงกัน และ จำนวนแถวที่จะถูกส่งกลับในพารามิเตอร์การแสดงผล

บทความนี้ นอกจากนี้ อธิบายวิธีการสร้างฟอร์มเว็บที่ให้ผู้ใช้อย่างง่าย อินเทอร์เฟซ แบบฟอร์มเว็บประกอบด้วยรายการต่อไปนี้:
  • กล่องข้อความที่ผู้ใช้ชนิดการค้นหา เงื่อนไข
  • ตัวควบคุมDataGridที่แสดงผลลัพธ์การค้นหา
  • ตัวควบคุมป้ายชื่อที่แสดงจำนวนของระเบียนที่ส่งคืน
  • ตัวควบคุมปุ่มที่เรียกกระบวนงานเก็บไว้เมื่อปุ่มนี้จะ คลิกค่าไว้

ความต้องการ

ฮาร์ดแวร์แนะนำ ซอฟต์แวร์ การจัดเค้าร่างข้อมูลต่อไปนี้ โครงสร้างพื้นฐานของเครือข่าย และเซอร์วิสแพ็คที่จำเป็น:
  • Microsoft SQL Server เวอร์ชั่น 7.0 หรือรุ่นที่ใหม่กว่า
  • Microsoft Visual Studio .NET
  • Microsoft Visual Basic .NET
  • สิทธิ์ในการสร้างกระบวนงานเก็บไว้ใน ฐานข้อมูล
บทความนี้อนุมานว่า คุณคุ้นเคยกับต่อไปนี้ หัวข้อ:
  • กระบวนงาน SQL Server ที่เก็บไว้

สร้างโครงการ 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ภายใต้แม่แบบ
  4. ในกล่องชื่อพิมพ์ชื่อสำหรับแอพลิเคชันเว็บของคุณ และจากนั้น คลิกตกลง
  5. เพิ่มตัวควบคุมเซิร์ฟเวอร์ต่อไปนี้ไปยังแบบฟอร์มเว็บ และตั้งค่า คุณสมบัติ ตามที่ระบุไว้ในตาราง:
    ยุบตารางนี้ขยายตารางนี้
    ตัวควบคุมคุณสมบัติ IDคุณสมบัติของข้อความ
    ป้ายชื่อlblLastNameพิมพ์นามสกุลของผู้เขียน:
    กล่องข้อความtxtLastName%
    ปุ่มbtnGetAuthorsได้รับการแต่ง
    ป้ายชื่อlblRowCount(จำนวนของแถว)

  6. ลากตัวควบคุมเซิร์ฟเวอร์ของDataGridจากกล่องเครื่องมือไปยังแบบฟอร์มเว็บ และตั้งค่าแล้ว นี้ ชื่อคุณสมบัติ GrdAuthors.
  7. คลิกขวาตาราง และจากนั้น คลิกจัดรูปแบบอัตโนมัติ
  8. คลิกProfessional 1สำหรับชุดรูปแบบ และจากนั้น คลิกตกลง

สร้างการ GetAuthorsByLastName กระบวนงานเก็บไว้

ใช้รหัส TRANSACT-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 จะมีพารามิเตอร์ป้อนเข้าที่สายอักขระการค้นหาเพื่อที่ได้รับ ทำการค้นหา "เช่น" ในตารางผู้สร้าง พารามิเตอร์ @RowCount คือ พารามิเตอร์การแสดงผลที่ใช้ ตัวแปร @@ROWCOUNT เพื่อขอรับแถวได้รับผลกระทบ

สร้าง และเรียกใช้กระบวนงานเก็บไว้

ในการเข้าถึงฐานข้อมูล SQL Server คุณต้องนำเข้าSystem.Data.SqlClient namespace ซึ่งเป็นวัตถุใหม่เช่นSqlDataReaderและSqlDataAdapterวัตถุ คุณสามารถใช้SqlDataReaderอ่านกระแสข้อมูลแบบไปข้างหน้าอย่างเดียวของแถวจากฐานข้อมูล SQL Server DataAdapterแสดงถึงชุดของคำสั่งข้อมูลและเชื่อมต่อฐานข้อมูลที่ คุณสามารถใช้ การเติมชุดข้อมูลวัตถุ และ การปรับปรุงฐานข้อมูล SQL Server

ADO.NET นอกจากนี้ยัง มีการแนะนำชุดข้อมูลวัตถุ ซึ่งเป็นตัวแทนการเก็บในหน่วยความจำของข้อมูลที่ มีความสอดคล้องกัน เชิงเขียนโปรแกรมรูปแบบโดยไม่คำนึงถึงข้อมูล แหล่งที่มา รหัสในส่วนนี้ใช้ทั้งหมดของวัตถุเหล่านี้
  1. คลิกสองครั้งที่แบบฟอร์มเว็บ
  2. เพิ่มรหัสต่อไปนี้ไปยังส่วนการประกาศของคุณ เว็บฟอร์ม ซึ่งปรากฏที่ด้านบนของหน้าต่างรหัส:
    Imports System.Data
    Imports System.Data.SqlClient
    					
  3. เพื่อให้แน่ใจว่า มีกระบวนงานที่เก็บอยู่ และ เพื่อสร้าง กระบวนการใหม่งานเก็บไว้ ใช้เป็นSqlCommandวัตถุ ด้วยSqlDataReaderวัตถุไว้ คุณสามารถใช้SqlCommandเพื่อเรียกใช้คำสั่ง SQL ใด ๆ กับฐานข้อมูล จากนั้น เรียกExecuteReaderวิธีการSqlCommandกลับSqlDataReaderซึ่งประกอบด้วยแถวที่ตรงกันสำหรับแบบสอบถามของคุณ

    เพิ่มการ รหัสต่อไปนี้ในเหตุการณ์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 With
    End If
    					
  4. เรียกกระบวนงานเก็บไว้ในเหตุการณ์คลิของปุ่มbtnGetAuthorsและจากนั้น ใช้การSqlDataAdapterวัตถุเมื่อต้องการเรียกใช้กระบวนงานที่เก็บไว้ของคุณ คุณต้องสร้างพารามิเตอร์ สำหรับกระบวนงานที่เก็บ และใช้ผนวกข้อมูลไปยังชุดพารามิเตอร์ของSqlDataAdapterวัตถุ

    เพิ่มรหัสต่อไปนี้หลังจากเหตุการณ์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. ในโซลูชัน Explorer ให้คลิกขวาหน้า.aspx จากนั้น คลิก ตั้งค่าเป็นเพจเริ่มต้น.
  6. บันทึกโครงการ และจากนั้น คลิกรีสตาร์ทใน Visual Studio .NET ขอให้สังเกตว่า มีการคอมไพล์โครงการ และ ที่หน้าการเริ่มต้นทำงาน
  7. พิมพ์นามสกุลของผู้เขียนในกล่องข้อความ และจากนั้น คลิก ผู้รับ ขอให้สังเกตว่า มีเรียกกระบวนงานที่เก็บและการส่งคืน แถวเติมข้อมูลDataGrid

    คุณสามารถใส่สตริงการค้นหาใน SQL Server-ชนิดเช่นG %ซึ่งส่งกลับผู้เขียนทั้งหมด โดยสุดท้ายชื่อที่ Start ด้วยตัวอักษร "G."

การแก้ไขปัญหา

  • ถ้าคุณไม่สามารถเชื่อมต่อไปยังฐานข้อมูล ตรวจสอบให้แน่ใจว่าสายอักขระอย่างถูกต้องชี้ไปยังเซิร์ฟเวอร์ที่กำลังเรียกใช้ SQL เซิร์ฟเวอร์
  • หากคุณสามารถเชื่อมต่อไปยังฐานข้อมูล แต่ ถ้าคุณพบ ปัญหาเมื่อคุณพยายามที่จะสร้างกระบวนงานที่เก็บ ตรวจสอบให้แน่ใจว่า คุณได้ สิทธิ์ที่ถูกต้องเพื่อสร้างกระบวนงานที่เก็บไว้ในฐานข้อมูลที่ คุณกำลังเชื่อมต่อ

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม ให้ดูหัวข้อต่อไปนี้ในการ เอกสารประกอบของ Microsoft .NET Framework ซอฟต์แวร์พัฒนา Kit (SDK):
ภาพรวมของ ADO.NET
http://msdn.microsoft.com/en-us/library/h43ks021.aspx

ชุดข้อมูล ADO.NET
.aspx http://msdn.microsoft.com/en-us/library/zb0sdh0b (VS.71)

ใช้ผู้ให้บริการข้อมูล.NET เพื่อเข้าถึงข้อมูล
.aspx http://msdn2.microsoft.com/en-us/library/s7ee2dwt (vs.71)
สำหรับข้อมูลเพิ่มเติม ดูสมุดบัญชีต่อไปนี้:
Wyke, R. Allen และ Sultan Rehman และ Brad Leupen การเขียนโปรแกรม XML (อ้างอิงหลัก). Microsoft Press, 2001
สำหรับข้อมูลเพิ่มเติม ให้ดูที่การฝึกอบรม Microsoft ต่อไปนี้ & หลักสูตรการออกใบรับรอง:
การเขียนโปรแกรม 2389 ด้วย ADO.NET
สำหรับการเพิ่มเติม ข้อมูลเกี่ยวกับวิธีการทำงานนี้ โดยการใช้เซิร์ฟเวอร์ที่ใช้งานอยู่ของ Microsoft หน้า ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base:
300488 วิธีการเรียกใช้ SQL เก็บกระบวนงานจากเพจที่มี ASP

คุณสมบัติ

หมายเลขบทความ (Article ID): 306574 - รีวิวครั้งสุดท้าย: 30 พฤษภาคม 2556 - Revision: 4.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
Keywords: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB306574 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:306574

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com