6.11.3.15 VisibleFieldCount

このプロパティでは、非表示ではないOracleDataReader内のフィールド数が取得されます。

宣言

// C#
public override int VisibleFieldcount { get; }

プロパティ値

非表示ではないフィールド数が取得されます。

例外

InvalidOperationException - リーダーがクローズされています。

備考

アプリケーションがOracleCommandオブジェクトのAddRowidプロパティをtrueに設定すると、アプリケーションはRowIdにアクセスできますが、これは表示可能なフィールドではありません。SELECT文リストにRowIdが追加されている場合は、このフィールドは表示可能です。OracleDataReader.VisibleFieldCountおよびOracleDataReader.FieldCountは、必ず同じ値を持っています。

// C#
 
using System;
using System.Data;
using System.Data.Common;
using Oracle.DataAccess.Client;
 
class VisibleFieldCountSample
{
  static void Main(string[] args)
  {
    string constr = "User Id=scott; Password=tiger; Data Source=oracle;";
    DbProviderFactory factory =
            DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
 
    using (DbConnection conn = factory.CreateConnection())
    {
      conn.ConnectionString = constr;
      try
      {
        conn.Open();
        OracleCommand cmd = (OracleCommand)factory.CreateCommand();
        cmd.Connection = (OracleConnection)conn;
 
        //to gain access to ROWIDs of the table
        cmd.AddRowid = true;
        cmd.CommandText = "select empno, ename from emp;";
 
        OracleDataReader reader = cmd.ExecuteReader();
        
        int visFC = reader.VisibleFieldCount; //Results in 2
        int hidFC = reader.HiddenFieldCount;  // Results in 1
 
        Console.Write("Visible field count: " + visFC);
        Console.Write("Hidden field count: " + hidFC);
 
        reader.Dispose();
        cmd.Dispose();
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.StackTrace);
      }
    }
  }
}