HOW TO: ที่เก็บ SQL Server ที่มีการเรียกอยู่กระบวนงานใน ASP.NET โดยใช้ Visual c# .NET

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

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

สรุป

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

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

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

ความต้องการ

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

สร้างโครงการ ASP.NET และเพิ่มตัวควบคุม

ในส่วนนี้ คุณสร้างโครงการมี ASP.NET และสร้างอินเทอร์เฟซสำหรับผู้ใช้ที่พื้นฐาน โปรดสังเกตว่า ขั้นตอนเหล่านี้ใช้รหัส Microsoft Visual c# .NET เมื่อต้องการสร้างโครงการ ดำเนินการดังต่อไปนี้:
  1. คลิกเริ่มการทำงานชี้ไปที่โปรแกรมชี้ไปที่Microsoft Visual Studio .NETแล้ว คลิกMicrosoft Visual Studio .NET.
  2. บนหน้า Visual Studio .NET เริ่ม คลิกโครงการใหม่.
  3. ในการโครงการใหม่กล่องโต้ตอบ คลิกแสดงโครงการ c#ภายใต้ชนิดโครงการแล้ว คลิกแอพลิเคชันเว็บ asp.netภายใต้แม่แบบ.
  4. ในการชื่อ:กล่อง พิมพ์ชื่อสำหรับโปรแกรมประยุกต์เว็บของคุณ และคลิกตกลง.
  5. เพิ่มตัวควบคุมเซิร์ฟเวอร์ต่อไปนี้ลงในฟอร์มของเว็บ และตั้งค่าคุณสมบัติ ตามที่แสดงอยู่ในตาราง:
    ยุบตารางนี้ขยายตารางนี้
    ตัวควบคุมรหัสคุณสมบัติคุณสมบัติของข้อความ
    ป้ายชื่อlblLastNameพิมพ์นามของผู้เขียน:
    กล่องข้อความtxtLastName%
    ปุ่มbtnGetAuthorsเรียกดูผู้สร้าง
    ป้ายชื่อlblRowCount(จำนวนของแถว)

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

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

ใช้รหัส Transact SQL ต่อไปนี้เพื่อสร้างขั้นตอนการ GetAuthorsByLastName ที่เก็บไว้:
Use Pubs
Go
Create Procedure GetAuthorsByLastName (@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.SqlClientnamespace ซึ่งแสดงวัตถุใหม่เช่นนั้นSqlDataReaderและSqlDataAdapterวัตถุ คุณสามารถใช้ได้SqlDataReaderเมื่อต้องการอ่านสตรีมไปข้างหน้าอย่างเดียวของแถวจากฐานข้อมูล SQL ServerDataAdapterแสดงชุดของคำสั่งของข้อมูลและการเชื่อมต่อฐานข้อมูลที่คุณสามารถใช้เพื่อกรอกรายละเอียดชุดข้อมูลวัตถุและ การปรับปรุงฐานข้อมูล SQL Server

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

    เพิ่มรหัสต่อไปนี้ในการPage_Loadเหตุการณ์ของฟอร์มเว็บ:
    	private void Page_Load(object sender, System.EventArgs e)
    	{
    		// 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 (!IsPostBack)
    		{
    			//Create a connection to the SQL Server; modify the connection string for your environment
    			//SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    			SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;UID=myUser;PWD=myPassword;");
    
    			// Create a Command object, and then set the connection.
    			// The following SQL statements check whether a GetAuthorsByLastName  
    			// stored procedure already exists.
    			SqlCommand MyCommand = new SqlCommand("select * from sysobjects where id = object_id(N'GetAuthorsByLastName')" +
    			"  and OBJECTPROPERTY(id, N'IsProcedure') = 1", MyConnection);
    
    			// Set the command type that you will run.
    			MyCommand.CommandType = CommandType.Text;
    
    			// Open the connection.
    			MyCommand.Connection.Open();
    
    			// Run the SQL statement, and then get the returned rows to the DataReader.
    			SqlDataReader MyDataReader = MyCommand.ExecuteReader();
    
    			// If any rows are returned, 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(!MyDataReader.Read())
    			{
    				MyCommand.CommandText = "create procedure GetAuthorsByLastName" + 
    					" (@au_lname varchar(40), select * from authors where" +
    					" au_lname like @au_lname; select @RowCount=@@ROWCOUNT";
    				MyDataReader.Close();
    				MyCommand.ExecuteNonQuery();
    			}
    			else
    			{
    				MyDataReader.Close();
    			}
    
    			MyCommand.Dispose();  //Dispose of the Command object.
    			MyConnection.Close(); //Close the connection.
    		}
    
    		// Add the event handler to the Button_Click event.
    		this.btnGetAuthors.Click += new System.EventHandler(this.btnGetAuthors_Click);
    	}
    					
  4. เรียกกระบวนงานที่เก็บไว้ในนั้นคลิกเหตุการณ์ของการbtnGetAuthorsปุ่ม และใช้การSqlDataAdapterวัตถุที่เรียกใช้กระบวนงานที่เก็บไว้ของคุณ คุณต้องสร้างพารามิเตอร์สำหรับกระบวนงานที่เก็บไว้ และผนวกไปยังพารามิเตอร์คอลเลกชันนั้นSqlDataAdapterวัตถุ

    เพิ่มรหัสต่อไปนี้หลังจากPage_Loadเหตุการณ์:
    	private void btnGetAuthors_Click(object sender, System.EventArgs e)
    	{
    		//Create a connection to the SQL Server; modify the connection string for your environment.
    		//SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    		SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;UID=myUser;PWD=myPassword;");
    
    		//Create a DataAdapter, and then provide the name of the stored procedure.
    		SqlDataAdapter 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 = (txtLastName.Text).Trim();
    
    		//Create and add an output parameter to the Parameters collection. 
    		MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@RowCount", SqlDbType.Int, 4));
    
    		//Set the direction for the parameter. This parameter returns the Rows that are returned.
    		MyDataAdapter.SelectCommand.Parameters["@RowCount"].Direction = ParameterDirection.Output;
    
    		//Create a new DataSet to hold the records.
    		DataSet DS = new DataSet();
    		
    		//Fill the DataSet with the rows that are returned.
    		MyDataAdapter.Fill(DS, "AuthorsByLastName");
    
    		//Get the number of rows returned, and 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;
    
    		//NOTE: If you do not call this method, the DataGrid is not displayed!
    		GrdAuthors.DataBind();
    
    		MyDataAdapter.Dispose(); //Dispose the DataAdapter.
    		MyConnection.Close(); //Close the connection.
    	}
    					
  5. ในโซลูชัน Explorer คลิกขวาที่เพจ.aspx และคลิกตั้งค่าเป็นเริ่มหน้า.
  6. บันทึกโครงการ และจากนั้น คลิกเริ่มการทำงานใน Visual Studio .NET ขอให้สังเกตว่า มีการคอมไพล์โครงการ และว่า หน้าเริ่มต้นทำงาน
  7. พิมพ์นามสกุลของผู้สร้างลงในกล่องข้อความ และจากนั้น คลิกเรียกดูผู้เขียน. แจ้งให้ทราบว่า มีเรียกกระบวนงานที่เก็บไว้ และที่แถวที่ส่งคืนเติมข้อมูลนั้นDataGrid.

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

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

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

คุณสมบัติ

หมายเลขบทความ (Article ID): 320916 - รีวิวครั้งสุดท้าย: 19 ตุลาคม 2553 - Revision: 2.0
ใช้กับ
  • Microsoft ADO.NET 1.1
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Keywords: 
kbhowtomaster kbsqlclient kbstoredproc kbsystemdata kbmt KB320916 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:320916

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

 

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