Làm th? nào đ?: Call SQL máy ch? lưu tr? th? t?c trong ASP.NET b?ng cách s? d?ng Visual C#.NET

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 320916 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài vi?t này ch?ng t? làm th? nào đ? s? d?ng ASP.NET và ADO.NET v?i Visual C#.NET đ? t?o ra và đ? g?i m?t Microsoft SQL Server lưu tr? th? t?c v?i m?t tham s? đ?u vào và đ?u ra m?t tham s?.

M?u m? trong bài vi?t này l?n đ?u tiên s? ki?m tra xem các th? t?c đư?c lưu tr? mà b?n s? t?o t?n t?i trong các Quán rư?u cơ s? d? li?u, mà là bao g?m trong b?n cài đ?t Microsoft SQL Server chu?n. N?u các th? t?c đư?c lưu tr? không t?n t?i, các m? t?o ra m?t th? t?c đư?c lưu tr? mà ph?i m?t m?t tham s? đ? t?m ki?m các Tác gi? b?ng d?a trên tên cu?i cùng và tr? v? phù h?p v?i hàng và s? hàng đó đư?c tr? v? trong m?t tham s? đ?u ra.

Bài vi?t này c?ng ch?ng t? làm th? nào đ? t?o ra m?t m?u Web cung c?p m?t giao di?n ngư?i dùng đơn gi?n. M?u Web có ch?a các m?c sau đây:
  • M?t h?p văn b?n mà ngư?i s? d?ng các lo?i đi?u ki?n t?m ki?m.
  • Một DataGrid ki?m soát mà hi?n th? k?t qu? t?m ki?m.
  • Một Nh?n hi?u đi?u khi?n hi?n th? s? tr? l?i h? sơ.
  • Một Nút ki?m soát mà các cu?c g?i th? t?c đư?c lưu tr? khi nút đư?c nh?p.

Yêu c?u

Danh sách sau v?ch ra đư?c đ? ngh? ph?n c?ng, ph?n m?m, cơ s? h? t?ng m?ng và gói d?ch v? đư?c yêu c?u:
  • Microsoft SQL Server Phiên b?n 7.0 ho?c cao hơn
  • Microsoft Visual Studio.NET
  • Microsoft Visual C#.NET
  • C?p phép đ? t?o ra các th? t?c đư?c lưu tr? trong cơ s? d? li?u
Bài vi?t này gi? đ?nh r?ng b?n đ? quen thu?c v?i các ch? đ? sau:
  • ASP.NET
  • Th? t?c lưu tr? SQL Server

T?o m?t ASP.LƯ?I d? án và thêm đi?u khi?n

Trong ph?n này, b?n t?o m?t ASP.NET d? án và xây d?ng giao di?n ngư?i dùng cơ b?n. Lưu ? r?ng các bư?c này s? d?ng Microsoft Visual C#.NET m?. Đ? t?o ra các d? án, h?y làm theo các bư?c sau:
  1. Nh?p vào B?t đ?u, đi?m đ?n Chương tr?nh, đi?m đ?n Microsoft Visual Studio.NET, sau đó b?m Microsoft Visual Studio.NET.
  2. Vào ph?ng thu tr?c quan.NET trang b?t đ?u, b?m D? án m?i.
  3. Trong các D? án m?i h?p tho?i h?p, b?m vào Visual C# các d? án dư?i Các lo?i d? án, sau đó b?m ASP.NET Web ?ng d?ng dư?i Khuôn mẫu.
  4. Trong các Tên h?p, g? tên cho ?ng d?ng Web c?a b?n và sau đó nh?p vào Ok.
  5. Thêm đi?u khi?n máy ch? sau vào m?u Web, và thi?t l?p các thu?c tính như chúng đư?c li?t kê trong b?ng:
    Thu g?n b?ng nàyBung r?ng b?ng này
    Ki?m soátID tài s?nB?t đ?ng s?n văn b?n
    Nh?n hi?ulblLastNameG? tên cu?i cùng c?a tác gi?:
    TextBoxtxtLastName%
    NútbtnGetAuthorsNh?n đư?c tác gi?
    Nh?n hi?ulblRowCount(D?ng s?)

  6. Kéo m?t DataGrid máy ch? đi?u khi?n t? h?p công c? đ? bi?u m?u Web và sau đó thi?t l?p các Tên b?t đ?ng s?n đ? GrdAuthors.
  7. Nh?p chu?t ph?i vào lư?i đi?n và b?m AutoFormat.
  8. Nh?p vào Chuyên nghi?p 1 Đ?i v?i các đ? án, và sau đó nh?p vào Ok.

T?o ra GetAuthorsByLastName lưu tr? th? t?c

S? d?ng m? Transact-SQL sau đây đ? t?o ra các th? t?c GetAuthorsByLastName lưu tr?:
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
				
M? này bao g?m hai tham s?: @ au_lname và @ RowCount. Tham s? @ au_lname là m?t tham s? đ?u vào l?y đư?c chu?i t?m ki?m đ? th?c hi?n m?t t?m ki?m "như" trong các Tác gi? b?ng. Tham s? @ RowCount là m?t tham s? đ?u ra có s? d?ng bi?n @@ ROWCOUNT đ? có đư?c các hàng b? ?nh hư?ng.

T?o và ch?y các th? t?c đư?c lưu tr?

Đ? truy c?p vào cơ s? d? li?u SQL Server, b?n ph?i nh?p kh?u các System.Data.SqlClient không gian tên, trong đó cung c?p cho các đ?i tư?ng m?i như các SqlDataReader và các SqlDataAdapter các đ?i tư?ng. B?n có th? s? d?ng SqlDataReader đ? đ?c m?t d?ng ch? có chuy?n ti?p hàng t? cơ s? d? li?u SQL Server. DataAdapter đ?i di?n cho m?t b? d? li?u l?nh và k?t n?i cơ s? d? li?u mà b?n có th? s? d?ng đ? đi?n vào các S? li?u đ?i tư?ng và C?p Nh?t cơ s? d? li?u SQL Server.

ADO.NET c?ng gi?i thi?u các S? li?u đ?i tư?ng này, là m?t đ?i di?n b? nh? cư trú d? li?u cung c?p m?t mô h?nh l?p tr?nh phù h?p, quan h? không phân bi?t c?a ngu?n d? li?u. M? trong ph?n này s? d?ng t?t c? các đ?i tư?ng này.
  1. B?m đúp vào bi?u m?u Web.
  2. Thêm m? sau (các b?ng cách s? d?ng ch? th?) b? ph?n tuyên b? c?a b?n m?u Web, mà s? xu?t hi?n ? trên cùng c?a c?a s? m?:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Đ? đ?m b?o r?ng các th? t?c đư?c lưu tr? t?n t?i và đ? t?o ra m?t quy tr?nh m?i đư?c lưu tr?, s? d?ng m?t SqlCommand đ?i tư?ng v?i m?t SqlDataReader đ?i tư?ng. B?n có th? s? d?ng SqlCommand ch?y b?t k? l?nh SQL đ?i v?i cơ s? d? li?u. Sau đó g?i nh?ng ExecuteReader phương pháp SqlCommand đ? tr? v? SqlDataReader, mà có ch?a các hàng phù h?p cho truy v?n c?a b?n.

    Thêm m? sau trong các Page_Load s? ki?n c?a m?u Web:
    	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. G?i th? t?c đư?c lưu tr? trong các Nh?p vào s? ki?n c?a các btnGetAuthors nút, và sau đó s? d?ng các SqlDataAdapter đ?i tư?ng đ? ch?y th? t?c đư?c lưu tr? c?a b?n. B?n ph?i t?o các tham s? cho các th? t?c đư?c lưu tr? và ph? thêm nó vào các Tham s? b? sưu t?p c?a các SqlDataAdapter đ?i tư?ng.

    Thêm m? sau đây sau khi các Page_Load s? ki?n:
    	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. Trong gi?i pháp Explorer, b?m chu?t ph?i vào trang .aspx, và sau đó nh?p vào Thi?t l?p là b?t đ?u trang.
  6. Lưu d? án, và sau đó nh?p vào B?t đ?u trong ph?ng thu tr?c quan.NET. Chú ? r?ng các d? án đư?c biên so?n và trang m?c đ?nh ch?y.
  7. G? tên cu?i cùng c?a tác gi? trong h?p văn b?n và b?m Nh?n đư?c tác gi?. Thông báo r?ng các th? t?c đư?c lưu tr? đư?c g?i là và tr? l?i hàng cư các DataGrid.

    B?n có th? cung c?p cho SQL Server-ki?u t?m ki?m chu?i như G %, mà tr? v? t?t c? các tác gi? b?ng cái tên trư?c đó b?t đ?u b?ng ch? "G."

Khắc phục sự cố

  • N?u b?n không th? k?t n?i v?i cơ s? d? li?u, h?y đ?m b?o r?ng các ConnectionString đúng cách đi?m đ?n máy ch? đang ch?y SQL Server.
  • N?u b?n có th? k?t n?i v?i cơ s? d? li?u, nhưng n?u b?n g?p v?n đ? khi b?n c? g?ng t?o các th? t?c đư?c lưu tr?, h?y ch?c ch?n r?ng b?n có quy?n đúng đ? t?o th? t?c đư?c lưu tr? trong cơ s? d? li?u mà b?n đang k?t n?i.

Thu?c tính

ID c?a bài: 320916 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft ADO.NET 1.1
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
T? khóa: 
kbhowtomaster kbsqlclient kbstoredproc kbsystemdata kbmt KB320916 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:320916

Cung cấp Phản hồi

 

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