C# でパラメータを使用してストアドプロシージャを実行する
このガイドでは、C# のパラメーターを使用してストアドプロシージャを実行/呼び出す方法、つまり、ストアドプロシージャ内でパラメーターを渡す方法を学習します。
このコンパクトなガイドでは、上から下まですべてを学びます。飛び込みましょう!
C#
のパラメータを使用してストアドプロシージャを実行する
C# のパラメーターを使用してストアドプロシージャを呼び出す方法を理解するには、ストアドプロシージャに関するすべての基本を理解する必要があります。
それらは何であり、どのような目的で使用されますか?それらの利点は何ですか?それらをどのように作成および変更しますか?
C#
のストアドプロシージャ
単一の実行プランにアセンブルされた Transact-SQL ステートメントのコレクションは、ストアドプロシージャです。データベースサーバーは、ストアドプロシージャと呼ばれるコードブロックを使用します。これは、一度コンパイルされて繰り返し使用できるプリコンパイル済みエンティティです。
一連の SQL ステートメントは、ストアード・プロシージャーを使用して順次実行できます。プロセスにデータを提供するには、プロシージャパラメータを使用する必要があります。
ストアドプロシージャは、パラメータマッピングの概念を使用します。フロントエンドとプロシージャパラメータの名前、タイプ、および方向は一致する必要があり、フロントエンドパラメータの長さはプロシージャパラメータの長さ以下である必要があります(パラメータをマップすることしかできません)。
return
ステートメントを使用して、プロシージャから任意の値を返します。
C#
でストアドプロシージャを使用する理由
データベースからデータにアクセスするには、通常、select
、insert
、update
などの SQL クエリを作成します。同じクエリを頻繁に使用する場合は、クエリをストアドプロシージャに変換するのが理にかなっています。
クエリを作成するたびに、データベースがクエリを解析します。ストアドプロシージャを作成した場合は、1 回だけ解析した後、N 回実行できます。
パフォーマンスは、保存されたルーチンを介して強化することもできます。データベースサーバー上の単一の実行ブロックであるストアドプロシージャには、すべての条件付きロジックが含まれています。
C# のパラメーターを使用してストアドプロシージャを実行する:コード例
以下は、C# のパラメーターを使用してストアドプロシージャを実行する手順です。
-
まず、プログラムの直上に
using System.Data.SqlClient;
とusing System.Data;
ライブラリを追加してください。これらにより、C# のプログラム内でストアドプロシージャを作成することができます。 -
以下のコード例では、データベースのパスを文字列に渡すことにより、ストアドプロシージャの作成を開始します。
-
その後、
using()
メソッドを使用してConnection
オブジェクトcon
を作成し、パス文字列を内部に渡しました。 -
SqlCommand
のオブジェクトを作成する必要があります。このオブジェクトを使用して、Connection
などの SQL コマンドプロパティを利用できます。 -
その後、コマンドタイプを
StoredProcedure
として指定する必要があります。 -
パラメータを使用してストアドプロシージャを作成するには、
SqlParameter
のオブジェクトを作成し、そのオブジェクトを使用して、渡すパラメータの名前、データ型、および値を定義する必要があります。 -
次にやらなければならないことは、それに方向性を与えることです。入力、出力、またはその両方として使用できます。
-
ここで、
AddWithValue()
を使用して、前に作成したパラメーターオブジェクトを渡します。 -
これらはすべて、
try-catch
ブロック内で実行する必要があることに注意してください。catch
ブロック内でキャッチする必要のあるデータのフェッチ中にエラーが発生する可能性があります。
コード例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.Data;
namespace Stored_procedure {
internal class Program {
static void Main(string[] args) {
// connection with sql
try {
// string for connection information
string con_str = "pass your connection path/information";
// create connection
using (SqlConnection con = new SqlConnection(con_str)) {
// create sqlcommand object
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Write the name of your stored prcedure";
cmd.Connection = con;
// specify the command type
cmd.CommandType = CommandType.StoredProcedure;
// create object of sqlparameter class
SqlParameter param = new SqlParameter {
// set the name of parameter
ParameterName = "Write your parameter name",
// set the type of parameter
SqlDbType = SqlDbType.Int, Value = 2,
// you can specify the direction of parameter input/output/inputoutput
Direction = ParameterDirection.InputOutput
};
// adding parameter in command
cmd.Parameters.AddWithValue(param);
// open connection of db
con.Open();
// executing the query
cmd.ExecuteNonQuery();
}
} catch (Exception e) {
Console.WriteLine(e.Message);
}
}
}
}
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn