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

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == C#からSQL Serverに設定したストアドプロシージャを実行する時のサンプルコードを記載する。 <br><br> == サンプルコー…」)
 
(文字列「<source」を「<syntaxhighlight」に置換)
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
C#からSQL Serverに設定したストアドプロシージャを実行する時のサンプルコードを記載する。
C#からSQL Serverに設定したストアドプロシージャを実行する時のサンプルコードを記載する。<br>
<br><br>
<br><br>


== サンプルコード ==
== サンプルコード ==
===== SQL Server  ストアド プロシージャ =====
===== SQL Server  ストアド プロシージャ =====
使用するストアドプロシージャは、引数無しのSELECT文の結果を返すだけのストアドプロシージャである。
使用するストアドプロシージャは、引数無しのSELECT文の結果を返すだけのストアドプロシージャである。<br>
  <source lang="sql">
  <syntaxhighlight lang="sql">
  CREATE PROCEDURE [dbo].[StoredProcedure_Sample]
  CREATE PROCEDURE [dbo].[StoredProcedure_Sample]
  AS
  AS
14行目: 14行目:
     SELECT * FROM sys.objects
     SELECT * FROM sys.objects
  END
  END
  </source>
  </syntaxhighlight>
<br>
<br>
===== C# サンプルコード =====
===== C# サンプルコード =====
SELECT文の結果をSqlDataAdapterのFillメソッドでDataSetに格納する。
SELECT文の結果をSqlDataAdapterのFillメソッドでDataSetに格納する。<br>
DataSetのTablesは配列になっているため、ストアドプロシージャがSELECT文の結果を複数返す場合にも対応可能である。
DataSetのTablesは配列になっているため、ストアドプロシージャがSELECT文の結果を複数返す場合にも対応可能である。<br>
  <source lang="c#">
  <syntaxhighlight lang="c#">
  using System;
  using System;
  using System.Configuration;
  using System.Configuration;
70行目: 70行目:
     }
     }
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


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

2021年11月22日 (月) 15:42時点における最新版

概要

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


サンプルコード

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

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

 CREATE PROCEDURE [dbo].[StoredProcedure_Sample]
 AS
 BEGIN
    SET NOCOUNT ON;
 
    SELECT * FROM sys.objects
 END


C# サンプルコード

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

 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();
        }
    }
 }