「C Sharpとデータベース - ストアドプロシージャ」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

Wiki がページ「SQL Serverのストアドプロシージャを実行する(C Sharp)」を「C Sharpとデータベース - ストアドプロシージャ」に、リダイレクトを残さずに移動しました
文字列「</source>」を「</syntaxhighlight>」に置換
14行目: 14行目:
     SELECT * FROM sys.objects
     SELECT * FROM sys.objects
  END
  END
  </source>
  </syntaxhighlight>
<br>
<br>
===== C# サンプルコード =====
===== C# サンプルコード =====
70行目: 70行目:
     }
     }
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:C_Sharp]]
[[カテゴリ:C_Sharp]]

2021年11月16日 (火) 06:48時点における版

概要

C#からSQL Serverに設定したストアドプロシージャを実行する時のサンプルコードを記載する。


サンプルコード

SQL Server ストアド プロシージャ

使用するストアドプロシージャは、引数無しのSELECT文の結果を返すだけのストアドプロシージャである。

<source lang="sql">
CREATE PROCEDURE [dbo].[StoredProcedure_Sample]
AS
BEGIN
   SET NOCOUNT ON;

   SELECT * FROM sys.objects
END
</syntaxhighlight>


C# サンプルコード

SELECT文の結果をSqlDataAdapterのFillメソッドでDataSetに格納する。
DataSetのTablesは配列になっているため、ストアドプロシージャがSELECT文の結果を複数返す場合にも対応可能である。

<source lang="c#">
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

public void GetData()
{
   var table = new DataTable();

   // 接続文字列の取得(データソースの直接指定)
   var connectionString = @"SERVER=LOCALHOST\SQLEXPRESS;UID=hoge;PWD=piyo;DATABASE=D_Sample";

   // 接続文字列の取得(設定ファイル(xml形式)から取得)
   var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString;

   using (var connection = new SqlConnection(connectionString))
   using (var command = connection.CreateCommand())
   {
       try
       {
           // データベースの接続開始
           connection.Open();

           // ストアドプロシージャの指定
           command.CommandType = CommandType.StoredProcedure;

           // ストアドプロシージャ名の指定
           command.CommandText = "StoredProcedure_Sample";

           // ストアドプロシージャを実行して結果をdataSetへ格納
           var dataSet = new DataSet();
           using (var adapter = new SqlDataAdapter(command))
           {
              adapter.Fill(dataSet);
           }

           // 結果を表示
           this.dataGridView1.DataSource = dataSet.Tables[0];
       }
       catch (Exception exception)
       {
           Console.WriteLine(exception.Message);
           throw;
       }
       finally
       {   // データベースの接続終了
           connection.Close();
       }
   }
}
</syntaxhighlight>