Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

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

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
Đối với một Microsoft Visual Basic.NET Phiên bản của bài viết này, xem 306574.
Đối với một Microsoft Visual J#.NET Phiên bản của bài viết này, xem 320622.

TRONG TÁC VỤ 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.
back to the top

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
back to the top

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:
    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.
back to the top

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 PubsGoCreate 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.

back to the top

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."
back to the top

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.
back to the top

Warning: This article has been translated automatically

Thuộc tính

ID Bài viết: 320916 - Xem lại Lần cuối: 08/27/2011 15:02:00 - Bản sửa đổi: 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

  • kbhowtomaster kbsqlclient kbstoredproc kbsystemdata kbmt KB320916 KbMtvi
Phản hồi