GetSchemaTable
このメソッドは、OracleDataReader
の列メタデータを記述するDataTable
を戻します。
宣言
// C# public override DataTable GetSchemaTable();
戻り値
結果セットのメタデータを含むDataTable
実装
IDataReader
例外
InvalidOperationException
- 接続がクローズされているか、またはリーダーがクローズされています。
備考
OracleDataReader.GetSchemaTable
メソッドは、SchemaTable
を戻します。
OracleDataReader SchemaTable
OracleDataReader
SchemaTable
は、OracleDataReader
の列メタデータを記述するDataTable
です。
ColumnSize
の値は、表定義のVARCHAR2
型、NVARCHAR2
型またはRAW
型の列の定義によって32Kまで表示されます。
SchemaTable
の列は、次に表示する順序になります。
表6-81 OracleDataReaderスキーマ表
名前 | ネーム・タイプ | 説明 |
---|---|---|
|
|
列の名前。 |
|
|
|
|
|
列内の値として可能な最大長。
|
|
|
列が数値のデータ型の場合の、列の最大精度。 この列には、Oracle |
|
|
列のスケール。 この列には、Oracle |
|
|
列値が一意かどうかを示します。 実表の2行にこの列の同じ値が含まれていない場合は、 次の条件が、この優先順位で適用される場合、
列に実表の重複した値を含めることができる場合、 デフォルトは、 選択リストの実表の列の各出現に対して、このプロパティの値は同じです。 |
|
|
列がキー列かどうかを示します。 列が、行を一意に識別する行セット内の列のセットの1つである場合は、 この列セットは、優先度の低い順に次の1つから生成できます。
明示的に選択された |
|
|
列が |
|
|
列に別名が使用されている場合の、データベース内の列名。 |
|
|
列を含むデータベース内のスキーマ名。 |
|
|
列を含むデータベース内の表名またはビュー名。 |
|
|
共通言語のランタイム型にマップします。 |
|
|
列のデータベース列タイプ( |
|
|
|
|
|
列が別名の場合は |
|
|
Oracle9iより前のバージョンのデータベースに接続する場合は、この値は常に |
|
|
列が式の場合は |
|
|
列が非表示の場合は |
|
|
列が読取り専用の場合は |
|
|
列が |
|
|
UDTのタイプ名。 |
|
|
列がID列の場合は |
|
|
列の新しい行に固定増分で値が割り当てられる場合は ODP.NET管理対象ドライバおよびODP.NET Coreでは使用できません |
|
|
ID列の値の生成方法を指定する ODP.NET管理対象ドライバおよびODP.NET Coreでは使用できません |
例
この例では、リーダーからSchemaTable
を作成して使用します。
/* Database Setup, if you have not done so yet. connect scott/tiger@oracle CREATE TABLE empInfo ( empno NUMBER(4) PRIMARY KEY, empName VARCHAR2(20) NOT NULL, hiredate DATE, salary NUMBER(7,2), jobDescription Clob, byteCodes BLOB ); Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values (1,'KING','SOFTWARE ENGR', '5657'); Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values (2,'SCOTT','MANAGER', '5960'); commit; */ // C# using System; using System.Data; using Oracle.DataAccess.Client; using Oracle.DataAccess.Types; class GetSchemaTableSample { static void Main() { string constr = "User Id=scott;Password=tiger;Data Source=oracle"; OracleConnection con = new OracleConnection(constr); con.Open(); string cmdstr = "SELECT EMPNO,EMPNAME FROM EMPINFO where EMPNO = 1"; OracleCommand cmd = new OracleCommand(cmdstr, con); //get the reader OracleDataReader reader = cmd.ExecuteReader(); //get the schema table DataTable schemaTable = reader.GetSchemaTable(); //retrieve the first column info. DataRow row = schemaTable.Rows[0]; //print out the column info Console.WriteLine("Column name: " + row["COLUMNNAME"]); Console.WriteLine("Precision: " + row["NUMERICPRECISION"]); Console.WriteLine("Scale: " + row["NUMERICSCALE"]); reader.Close(); // Close the connection con.Close(); } }