[この記事は18年前に書かれました]
汎用的なコードで、接続型データベースアクセス(データ検索)を行うには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新機能
・関連記事
汎用的なコードでデータベースアクセス
コメント