ここでは、Npgsql で select 文を発行して結果を取得するサンプルコードを掲載しています。結果を取得しない delete 文などのサンプルは 「 トランザクションの管理 ( コミットとロールバック ) 」 を参照ください。
スポンサーリンク
SELECT 文の発行と結果の読み込み
Npgsql で select 文を発行して、その結果を取得するサンプルコードになります。詳細はサンプル内のコメントも参照ください。
C#
//using Npgsql;
//using System.Data;
// データベース接続文字列
string conStr = @"Server=localhost;Port=5432;User Id=postgres;Password=password;Database=dbname";
// データベースに接続
NpgsqlConnection conn = new NpgsqlConnection(conStr);
conn.Open();
// 発行するselect文
string sql = @"select col1, col2, col3 from table1 order by col1";
NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
// クエリ実行
using (NpgsqlDataReader dr = cmd.ExecuteReader())
{
// レコードなし
if (dr.HasRows == false)
{
// この処理はなくてもOK
}
while (dr.Read())
{
// NULL の場合は、初期値を設定するようにする
// データベースの型に合わせて格納する変数の型も変更する
string col1 = (dr["col1"] == DBNull.Value) ? String.Empty : (string)dr["col1"];
DateTime col2 = (dr["col2"] == DBNull.Value) ? DateTime.MinValue : (DateTime)dr["col2"];
int col3 = (dr["col3"] == DBNull.Value) ? 0 : (int)dr["col3"];
// 取得したデータを云々・・の処理など
}
/*
* ポイント
*-----------------------------------------------------------------------
* using などで、ちゃんと DataReader をクローズしておかないと不具合の原因になる
* 手動でクローズする場合は、dr.Close();
*/
}
// データベースから切断
conn.Close();