汎用的なコードで接続型データベースアクセス(データ検索)

汎用的なコードで、接続型データベースアクセス(データ検索)を行うにはDbDataReaderクラスを使用します。




using System.Configuration;
using System.Data.Common;
...

ConnectionStringSettings setting = System.Configuration.ConfigurationManager.ConnectionStrings["OracleTest"];
DbProviderFactory factory = DbProviderFactories.GetFactory(setting.ProviderName);

using (DbConnection con = factory.CreateConnection())
{
  con.ConnectionString = setting.ConnectionString;
  con.Open();

  try
  {
    // Commandオブジェクト生成
    using (DbCommand cmd = con.CreateCommand())
    {
      cmd.CommandText = "select column1, column2 from test where column1 = '101'";

      // クエリの実行
      using (DbDataReader reader = cmd.ExecuteReader())
      {
        while (reader.Read())
        {
          // カラム名
          Console.WriteLine(reader["column1"]);
          Console.WriteLine(reader["column2"]);
          // 0 から始まる序数
          Console.WriteLine(reader.GetString(0));
          Console.WriteLine(reader.GetString(1));
        }
      }
    }
  }
  finally
  {
    if (con != null)
    {
      con.Close();
    }
  }
}

DbDataReader#Read()メソッドでカーソルを進めて、カラム名を指定してインデクサでアクセスするか、 序数でカーソルのレコードのデータにアクセスします。
 DbDataReaderには、各種の型用にメソッドが用意されていますが、(GetDecimal(),GetChar()等) 実装プロバイダによってはサポートされていない場合は、NotSupportedExceptionが発生するので 注意が必要です。

  (※).NET Framework version 2.0新機能

・関連記事
 汎用的なコードでデータベースアクセス

0 件のコメント :

コメントを投稿