C# で SQL Server に対して SELECT文 を実行する際のサンプルコードを作成しました。
ここでは「SELECT文 の 実行結果 を DataTable へ投入する方法」と「SELECT文 の 実行結果 を 1行ずつ読み込んで処理していく方法」の2種類を例として取り上げます。
まとめて読み込む (DataTable)
DataTable へ SELECT文 の 結果 を一括読み込みしてしまう方法です。
単純で理解しやすい方法かと思います。
DataSet へ 結果投入してしまってもよいのですが、DataTable を取り出すためにワンクッション必要となるため、個人的には DataTable へ直接投入で良いかと思います。
まとめて DataTable へ読み込む際は、 DataAdapter を利用します。
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
public DataTable GetData()
{
var table = new DataTable();
// 接続文字列の取得
var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
using (var command = connection.CreateCommand())
{
try
{
// データベースの接続開始
connection.Open();
// SQLの設定
command.CommandText = @"SELECT count(*) FROM T_USER";
// SQLの実行
var adapter = new SqlDataAdapter(command);
adapter.Fill(table);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
throw;
}
finally
{
// データベースの接続終了
connection.Close();
}
}
return table;
}
1行ずつ読み込む (SqlDataReader)
SELECT の 結果 を1行ずつ読み込む場合、 DataReader を利用します。
Command の ExecuteReader() メソッドを実行することで DataReader を取得し、1行ずつ読み込んで処理を行います。
少し実装は面倒ですが O/Rマッピング のようなことができます。
以下のサンプルコードにおける UserModel は T_USER に対応する独自のクラスになります。
using System; using System.Collections.Generic; using System.Configuration; using System.Data.SqlClient; using WebApplication1.Models; public ListGetData() { var list = new List (); // 接続文字列の取得 var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString; using (var connection = new SqlConnection(connectionString)) using (var command = connection.CreateCommand()) { try { // データベースの接続開始 connection.Open(); // SQLの設定 command.CommandText = @"SELECT ID,PASSWORD,ROLE_NAME FROM T_USER"; // SQLの実行 using (var reader = command.ExecuteReader()) { while (reader.Read() == true) { list.Add(new UserModel() { Id = reader["ID"] as string, Password = reader["PASSWORD"] as string, RoleName = reader["ROLE_NAME"] as string }); } } } catch (Exception exception) { Console.WriteLine(exception.Message); throw; } finally { // データベースの接続終了 connection.Close(); } } return list; }
関連記事
C# を使って SQL Server に接続、操作する方法に関しては以下のような記事もあります。 あわせて参考に読んでいただけると理解が深まるハズ!
- SQL Server に 接続
- SQL Server に対して SELECT文 を 実行 ←この記事
- SQL Server に対して INSERT文 ・ UPDATE文 ・ DELETE文 を 実行
- SQL Server に対して パラメタライズドクエリ を 実行
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!