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 の フォロー」 お願いします!!