方法: SQL Server の呼び出しで ASP ストアド プロシージャ。NET の Visual C# を使用します。NET

文書翻訳 文書翻訳
文書番号: 320916
すべて展開する | すべて折りたたむ

目次

概要

この資料では、ASP を使用する方法を示します。NET と ADO を使用します。NET Visual C#。NET を作成し、Microsoft SQL Server を呼び出すには、入力パラメーターと出力パラメーターはストアド プロシージャ。

この資料のサンプル コードの最初で作成するストアド プロシージャが存在するかどうかチェックを Pubs データベースは、標準の Microsoft SQL Server のインストールが含まれています。ストアド プロシージャが存在しない場合は、コードを検索するのには、1 つのパラメーターを受け取るストアド プロシージャを作成、 著者 表は、last name でと一致する行を返し、出力パラメーターとして返される行の数です。

この資料では、単純なユーザー インターフェイスを提供する Web フォームを作成する方法も示します。Web フォームには、次の項目が含まれます。
  • ユーザーが検索条件を入力するテキスト ボックスです。
  • A データ グリッド 検索結果を表示するコントロールです。
  • A ラベル 返されるレコードの数を表示するコントロールです。
  • A ボタン コントロール ボタンがクリックしてされたときに、ストアド プロシージャを呼び出します。

要件

推奨されるハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および必要な service pack を以下に示します。
  • Microsoft SQL Server 7.0 またはそれ以降のバージョン
  • マイクロソフトの Visual Studio。NET
  • Microsoft の Visual C#。NET
  • データベース内のストアド プロシージャを作成するためのアクセス許可
この資料では、次のトピックに精通しているを前提としています。
  • ASP。NET
  • SQL Server のストアド プロシージャ

ASP を作成します。Net プロジェクトを作成し、コントロールを追加します。

このセクションでは、ASP を作成します。Net プロジェクトを作成し、基本的なユーザー インターフェイスを作成します。次の手順が Microsoft Visual C# 使用する注意してください。NET コードです。プロジェクトを作成するには、次の手順を実行します。
  1. クリックしてください。 開始、ポイント プログラム、ポイント マイクロソフトの Visual Studio。NET、し マイクロソフトの Visual Studio。NET.
  2. Visual Studio の上で。NET スタート ページ、クリックしてください 新しいプロジェクト.
  3. で、 新しいプロジェクト ダイアログ ボックス、クリックして Visual C# プロジェクト 下にあります。 [プロジェクトの種類、し ASP。Net プロファイル 下にあります。 テンプレート.
  4. で、 名前 ボックスし、Web アプリケーションの名前を入力し、クリックしてください [OK].
  5. 次のサーバー コントロールを Web フォームに追加し、表のとおりにプロパティを設定します。
    元に戻す全体を表示する
    コントロールID プロパティText プロパティ
    ラベルlblLastName著者のラスト ネームを入力します。
    テキスト ボックスtxtLastName%
    ボタンbtnGetAuthors作成者を取得します。
    ラベルlblRowCount(行カウント)

  6. ドラッグします。 データ グリッド サーバー コントロールの [ツールボックス] から Web フォームには、し設定、 名前 プロパティ GrdAuthors.
  7. グリッドを右クリックしをクリックしてください オート フォーマット.
  8. クリックしてください。 プロフェッショナル 1 方式、およびクリック [OK].

作成、GetAuthorsByLastName ストアド プロシージャ

GetAuthorsByLastName のストアド プロシージャの作成に以下の Transact SQL コードを使用します。
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
				
このコードには 2 つのパラメーターが含まれます: @ au_lname および @ RowCount。@ Au_lname パラメーター"like"検索を実行するために、検索文字列を取得する入力パラメーターである、 著者 テーブルです。@ RowCount パラメーター @ @ROWCOUNT 変数を使用して、影響を受ける行を取得するのには、出力パラメーターです。

作成し、ストアド プロシージャを実行します。

SQL Server データベースにアクセスするのには、インポートする必要があります、 System.Data.SqlClient などの新しいオブジェクトを提供する名前空間は、 SqlDataReader および 含む Dataset オブジェクト。使用することができます。 SqlDataReader SQL Server データベースから行の転送専用ストリームを読み取るには。 データ アダプター 一連のデータ コマンドおよびデータベース接続に使用できるを表します、 データセット オブジェクトとは、SQL Server データベースを更新します。

ADO.NET も導入しています、 データセット オブジェクトは、データ ソースにかかわらず一貫性のある、リレーショナル プログラミング モデルを提供するデータのメモリ常駐表現です。このセクションのコードでこれらすべてのオブジェクトを使用します。
  1. Web フォームをダブルクリックします。
  2. 次のコードは (追加します。 ここで ディレクティブ) を Web フォームの宣言セクションに、コード ウィンドウの一番上に表示します。
    using System.Data;
    using System.Data.SqlClient;
    					
  3. ストアド プロシージャが存在するかどうかを確認するのには、新しいストアド プロシージャを作成するを使用します。 SqlCommand オブジェクトのでは SqlDataReader オブジェクトです。使用することができます。 SqlCommand データベースに対して SQL コマンドを実行します。次を呼び出して、 ExecuteReader メソッド SqlCommand 取得するのには SqlDataReader、クエリに一致する行が含まれています。

    次のコードを追加、 Page_Load 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. ストアド プロシージャを呼び出すは クリックしてください。 イベント、 btnGetAuthors ボタンをクリックし、[次を使用して、 含む Dataset ストアド プロシージャを実行するオブジェクトです。ストアド プロシージャのパラメーターを作成して追加する必要があります、 パラメーター コレクションの 含む Dataset オブジェクトです。

    後に、次のコードを追加、 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. ソリューション エクスプ ローラーで、.aspx ページを右クリックし、クリックしてください スタート ページの設定.
  6. プロジェクトを保存し、 開始 Visual Studio で。NET。プロジェクトがコンパイルされ、既定のページが実行されることに注意してください。
  7. テキスト ボックスには、著者のラスト ネームを入力し、クリックしてください 作成者を取得します。.通知は、ストアド プロシージャが呼び出され、返された行を作成することが データ グリッド.

    SQL Server 型検索文字列などを提供することができます。 G %、複数行を返すすべての著者氏名が、文字"G"で始まる

トラブルシューティング

  • データベースに接続できない場合は、確認してください、 接続文字列 SQL Server を実行しているサーバーへのポインターが正しく。
  • 場合は、データベースに接続できても、ストアド プロシージャを作成しようとすると問題が発生した場合ことを確認するのには、接続先のデータベースにストアド プロシージャを作成するのには、適切なアクセス許可があります。

プロパティ

文書番号: 320916 - 最終更新日: 2011年7月27日 - リビジョン: 5.0
キーワード:?
kbhowtomaster kbstoredproc kbsqlclient kbsystemdata kbmt KB320916 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:320916
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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