データベースのストアド・プロシージャ

7718 ワード

ストレージ・プロシージャとは?ストレージ・プロシージャを使用するメリットとデメリット
ストアド・プロシージャ(Stored Procedure)は、特定の機能を達成するためのSQL文セットのセットであり、コンパイルされた後にデータベースに格納されます(最初のコンパイル後に再呼び出して再コンパイルする必要はありません).
注:ユーザーは、ストレージ・プロシージャの名前を指定し、パラメータを指定します(このストレージ・プロシージャにパラメータがある場合).ストレージ・プロシージャは、データベース内の重要なオブジェクトであり、設計されたデータベース・アプリケーションであれば、ストレージ・プロシージャを使用する必要があります.
以下、ASP.NETはイベント処理を更新し、Commandオブジェクトを使用してデータベース内のデータを変更し、指定したストレージ・プロシージャとパラメータを表示します.
 1  protected void btn_Update_Click(object sender, EventArgs e)
 2     {
 3         int intUpdateCount;  //      
 4 
 5         SqlCommand sqlCommand = new SqlCommand();
 6         SqlConnection conn = CreateConnection();
 7         sqlCommand.Connection = conn;
 8         sqlCommand.CommandText = "update_student";  //         Command   CommandText  
 9 
10         /*---------           --------*/
11         sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
/*-----------------------------------*/
12 sqlCommand.Parameters.AddWithValue("@No", TextBox1.Text); 13 sqlCommand.Parameters.AddWithValue("@Name", TextBox2.Text); 14 sqlCommand.Parameters.AddWithValue("@Sex", DropDownList1.Text); 15 sqlCommand.Parameters.AddWithValue("@birth", TextBox3.Text); 16 sqlCommand.Parameters.AddWithValue("@Address", TextBox4.Text); 17 sqlCommand.Parameters.AddWithValue("@Photo", FileUpload1.FileName); 18 19 try 20 { 21 conn.Open(); 22 intUpdateCount=sqlCommand.ExecuteNonQuery(); 23 if (FileUpload1.HasFile == true) 24 { 25 FileUpload1.SaveAs(Server.MapPath(("~/images/") + FileUpload1.FileName)); 26 } 27 if (intUpdateCount > 0) 28 Label1.Text = ""; 29 else 30 Label1.Text = ""; 31 }catch(Exception ex) 32 { 33 Label1.Text = "" + ex.Message; 34 } 35 finally 36 { 37 sqlCommand = null; 38 conn.Close(); 39 conn = null; 40 } 41 }

ストレージ・プロシージャを使用するメリットとデメリット
メリット:
(1)ネットワーク通信量を減らす.
ロー数の少ないストアド・プロシージャを呼び出すと、SQL文を直接呼び出すネットワーク通信量には大きな差はないかもしれませんが、ストアド・プロシージャにSQL文が100行以上含まれている場合は、1行1行の呼び出しSQL文よりもパフォーマンスが大幅に向上します.
(2)実行速度が速い.
まず、ストレージ・プロシージャが作成されると、データベースは解析および最適化されます.次に、ストレージ・プロシージャが実行されると、メモリにこのストレージ・プロシージャが1部保持され、次回同じストレージ・プロシージャが実行されると、メモリから直接呼び出されます.
(3)より強い適応性.
ストレージ・プロシージャのデータベースへのアクセスは、ストレージ・プロシージャによって行われるため、データベース開発者は、ストレージ・プロシージャ・インタフェースを変更せずにデータベースを変更できますが、これらの変更はアプリケーションに影響を与えません.
(4)分散作業.
アプリケーションとデータベースの符号化作業は、互いに圧縮することなく、それぞれ独立して行うことができます.
欠点:
1.入力したストアド・プロシージャのパラメータを変更する必要があるほど変更範囲が広い場合、または返されるデータを変更する必要がある場合は、パラメータの追加、GetValue()呼び出しの更新など、プログラム・セットのコードを更新する必要があります.
2.移植性が悪い
ストレージ・プロシージャを使用してSQLサーバにアプリケーションをバインドするため、ストレージ・プロシージャを使用してビジネス・ロジックをカプセル化すると、アプリケーションの移植性が制限されます.