「C Sharpとデータベース - 結果の取得」の版間の差分
ナビゲーションに移動
検索に移動
細 (Wiki がページ「SQL Serverの実行結果を取得する」を「SQL Serverの実行結果を取得する(C Sharp)」に、リダイレクトを残さずに移動しました) |
編集の要約なし |
||
11行目: | 11行目: | ||
DataSetを使用する方法もあるが、DataTableを取り出すためにワンクッション必要となるため、DataTableへ直接代入する方がよい。<br><br> | DataSetを使用する方法もあるが、DataTableを取り出すためにワンクッション必要となるため、DataTableへ直接代入する方がよい。<br><br> | ||
一括でDataTableへ読み込む際は、DataAdapterを使用する。<br> | 一括でDataTableへ読み込む際は、DataAdapterを使用する。<br> | ||
<source lang="c#"> | |||
using System; | using System; | ||
using System.Configuration; | using System.Configuration; | ||
52行目: | 52行目: | ||
return table; | return table; | ||
} | } | ||
</source> | |||
<br> | <br> | ||
59行目: | 60行目: | ||
実装は面倒だが O/Rマッピングのようなことができる。<br><br> | 実装は面倒だが O/Rマッピングのようなことができる。<br><br> | ||
以下のサンプルコードにおけるUserModelはT_USERに対応する独自のクラスになる。<br> | 以下のサンプルコードにおけるUserModelはT_USERに対応する独自のクラスになる。<br> | ||
<source lang="c#"> | |||
using System; | using System; | ||
using System.Collections.Generic; | using System.Collections.Generic; | ||
111行目: | 112行目: | ||
return list; | return list; | ||
} | } | ||
</source> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:C_Sharp]] | [[カテゴリ:C_Sharp]] |
2020年2月5日 (水) 00:10時点における版
概要
C\#でSQL Serverに対してSELECT文を実行する際のサンプルコードを作成した。
ここでは、下記の2種類を例として取り上げる。
- SELECT文の実行結果をDataTableを用いてまとめて読み込む方法
- SELECT文の実行結果を1行ずつ読み込む方法
まとめて読み込む(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();
// クエリの作成
command.CommandText = @"SELECT count(*) FROM T_USER";
// クエリの実行
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 List<usermodel> GetData()
{
var list = new List<usermodel>();
// 接続文字列の取得
var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
using (var command = connection.CreateCommand())
{
try
{
// データベースの接続開始
connection.Open();
// クエリの作成
command.CommandText = @"SELECT ID,PASSWORD,ROLE_NAME FROM T_USER";
// クエリの実行
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;
}