C# で SqlDataReader を使って SQL Server データベースから値を取得する
SQL Server データベースから値を取得する
SqlDataReader はデータベースから取得したレコードを順番に読んでいくのに便利なクラスです。
今回は、SqlDataReader の簡単な使い方についてです。
SqlDataReader によるデータの取得
SqlDataReader を使ってデータベースから取得したデータを読んで、コンソールに書き出してみましょう。
Test データベースの Student テーブルからデータを取得する、次ようなクエリーがあります。
以下のコードで、クエリーの結果を SQL Server データベースからデータを取得することができます。
string connString = ConfigurationManager.ConnectionStrings["DB1"].ConnectionString; string queryString = "SELECT StudentID, FirstName, LastName FROM Student;"; using (SqlConnection conn = new SqlConnection(connString)) { SqlCommand comm = new SqlCommand(queryString, conn); conn.Open(); using (SqlDataReader dr = comm.ExecuteReader()) { while (dr.Read()) { Console.WriteLine(string.Format("{0}: {1} {2}", dr["StudentID"], dr["FirstName"], dr["LastName"])); } } }
SqlDataReader を使うのには System.Data.SqlClient、config ファイルから値を取得するのに System.Configuration が必要ですので、using ディレクティブで追加しておきます。
config ファイルからの接続文字列取得の方法を確認したい場合はこちらをご覧ください。
C# - データベースの接続文字列を App.config から取得する
C# - データベースの接続文字列を App.config から取得する
このコードで行っている処理の流れは次の通りです。
- 接続文字列をコンストラクターに渡して SqlConnection を生成する。
- アドホック・クエリとコネクションをコンストラクターに渡して SqlCommand を生成する。
- コネクションを open する。
- SqlCommand の ExecuteReader メソッドを呼んで、SqlDataReader を生成する。
- SqlDataReader の Read メソッド を While ループで実行することで、1 行ずつ読み込む。
- 読んだ行をコンソールにフォーマットして書き出す。
SqlDataReader の Read メソッドはまだ行がある時は true、もうない時は false を返してくれるので、While(dr.Read()) としておけば 全行読み終わった時点で while ループを抜けてくれます。
SqlConnection や SqlDataReader は using ステートメントを使っておかないと、Exception でコードパスが飛んだ時に、Close し忘れる可能性がでてきてしまいますので、using を使いましょう。
こちらが実行結果です!