getColumns メソッド (SQLServerDatabaseMetaData)

JDBC ドライバーのダウンロード

指定されたカタログで使用できるテーブル列の記述を取得します。

構文

  
public java.sql.ResultSet getColumns(java.lang.String catalog,  
                                     java.lang.String schema,  
                                     java.lang.String table,  
                                     java.lang.String col)  

パラメーター

catalog

カタログ名を含む文字列です。

schema

スキーマ名のパターンを含む文字列です。

テーブル

テーブル名のパターンを含む文字列です。

col

列名のパターンを含む文字列です。

戻り値

SQLServerResultSet オブジェクトです。

例外

SQLServerException

解説

この getColumns メソッドは、java.sql.DatabaseMetaData インターフェイスの getColumns メソッドで規定されています。

getColumns メソッドによって返される結果セットには、次の情報が含まれます。

名前 説明
TABLE_CAT String カタログ名。
TABLE_SCHEM String テーブル スキーマ名です。
TABLE_NAME String テーブル名。
COLUMN_NAME String 列名。
DATA_TYPE smallint java.sql.Types の SQL データ型です。
TYPE_NAME String データ型の名前です。
COLUMN_SIZE int 列の完全桁数です。
BUFFER_LENGTH smallint データの転送サイズです。
DECIMAL_DIGITS smallint 列の小数点以下の桁数です。
NUM_PREC_RADIX smallint 列の基数です。
NULLABLE smallint 列が null を許容するかどうかを示します。 次のいずれかの値を指定できます。

columnNoNulls (0)

columnNullable (1)
REMARKS String 列に関連付けられているコメントです。

注: SQL Server では、この列に対して常に null 値を返します。
COLUMN_DEF String 列の既定値です。
SQL_DATA_TYPE smallint 記述子の TYPE フィールドでの SQL データ型の値です。 datetime データ型と SQL-92 interval データ型以外は、DATA_TYPE 列と同じです。 この列は常に値が返されます。
SQL_DATETIME_SUB smallint 日付時刻データ型および SQL-92 interval データ型のサブタイプ コード。 他のデータ型の場合、この列は NULL を返します。
CHAR_OCTET_LENGTH int 列の最大バイト数です。
ORDINAL_POSITION int テーブル内の列のインデックスです。
IS_NULLABLE String 列で null 値が許容されるかどうかを示します。
SS_IS_SPARSE smallint 列がスパース列の場合は 1、それ以外の場合は 0 になります。1
SS_IS_COLUMN_SET smallint 列がスパース column_set 列の場合は 1、それ以外の場合は 0 になります。 1
SS_IS_COMPUTED smallint TABLE_TYPE の列が計算列であるかどうかを示します。 1
IS_AUTOINCREMENT String 列が自動インクリメントされる場合は "YES" です。 列が自動インクリメントされない場合は "NO" です。 列が自動インクリメントされるかどうかをドライバーが判断できない場合は "" (空の文字列) です。 1
SS_UDT_CATALOG_NAME String UDT (ユーザー定義型) を含むカタログの名前です。 1
SS_UDT_SCHEMA_NAME String UDT (ユーザー定義型) を含むスキーマの名前です。 1
SS_UDT_ASSEMBLY_TYPE_NAME String 完全修飾名の UDT (ユーザー定義型) です。 1
SS_XML_SCHEMACOLLECTION_CATALOG_NAME String XML スキーマ コレクション名が定義されているカタログの名前です。 カタログ名が見つからない場合は、この変数に空文字列が含まれます。 1
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME String XML スキーマ コレクション名が定義されているスキーマの名前です。 スキーマ名が見つからない場合は、空文字列です。 1
SS_XML_SCHEMACOLLECTION_NAME String XML スキーマ コレクションの名前です。 名前が見つからない場合は、空文字列です。 1
SS_DATA_TYPE tinyint 拡張ストアド プロシージャによって使用される SQL Server データ型です。

SQL Server によって返されるデータ型の詳細については、SQL Server オンライン ブックの「データ型 (Transact-SQL)」を参照してください。

(1) SQL Server 2005 (9.x) に接続している場合、この列はありません。

注意

getColumns メソッドによって返されるデータの詳細については、SQL Server オンライン ブックの「sp_columns (Transact-SQL)」を参照してください。

Microsoft SQL Server JDBC Driver 3.0 では、次の動作が以前のバージョンの JDBC Driver から変更されています。

DATA_TYPE 列には、次の変更点があります。

SQL Server データ型 JDBC Driver 2.0 (または、SQL Server 2005 (9.x) に接続されている場合) での戻り値の型と関連付けられている数値定数 SQL Server 2008 (10.0.x) 以降のバージョンに接続されている場合の JDBC Driver 3.0 での戻り値の型
8 KB を超えるユーザー定義型 LONGVARBINARY (-4) VARBINARY (-3)
geography LONGVARBINARY (-4) VARBINARY (-3)
geometry LONGVARBINARY (-4) VARBINARY (-3)
varbinary(max) LONGVARBINARY (-4) VARBINARY (-3)
nvarchar(max) LONGVARCHAR (-1) または LONGNVARCHAR (JDBC 4) (-16) VARCHAR (12) または NVARCHAR (JDBC 4) (-9)
varchar(max) LONGVARCHAR (-1) VARCHAR (12)
time VARCHAR (12) または NVARCHAR (JDBC 4) (-9) TIME (-154)
日付 VARCHAR (12) または NVARCHAR (JDBC 4) (-9) DATE (91)
datetime2 VARCHAR (12) または NVARCHAR (JDBC 4) (-9) TIMESTAMP (93)
datetimeoffset VARCHAR (12) または NVARCHAR (JDBC 4) (-9) microsoft.sql.Types.DATETIMEOFFSET (-155)

COLUMN_SIZE 列には、次の変更点があります。

SQL Server データ型 JDBC Driver 2.0 での戻り値の型 JDBC Driver 3.0 での戻り値の型
nvarchar(max) 1073741823 2147483647 (データベースのメタデータ)
xml 1073741823 2147483647 (データベースのメタデータ)
8 KB 以下のユーザー定義型 8 KB (結果セットとパラメーターのメタデータ) ストアド プロシージャによって返される実際のサイズです。
time この型の文字列表記の長さ (文字数) です (秒部分に許容される最大有効桁数を想定)。
日付 time と同じです。
datetime2 time と同じです。
datetimeoffset time と同じです。

BUFFER_LENGTH 列には、次の変更点があります。

SQL Server データ型 JDBC Driver 2.0 での戻り値の型 JDBC Driver 3.0 での戻り値の型
8 KB を超えるユーザー定義型 2147483647

TYPE_NAME 列には、次の変更点があります。

SQL Server データ型 JDBC Driver 2.0 での戻り値の型 JDBC Driver 3.0 での戻り値の型
varchar(max) text varchar
varbinary(max) image varbinary

DECIMAL_DIGITS 列には、次の変更点があります。

SQL Server 型 JDBC Driver 2.0 JDBC Driver 3.0
time null 7 (または、指定した場合はそれより少なくなります)
日付 null null
datetime2 null 7 (または、指定した場合はそれより少なくなります)
datetimeoffset null 7 (または、指定した場合はそれより少なくなります)

SQL_DATA_TYPE 列には、次の変更点があります。

SQL Server データ型 JDBC Driver 2.0 での SQL Server 2008 のデータ値 JDBC Driver 3.0 での SQL Server 2008 のデータ値
varchar(max) -10 -9
nvarchar(max) -1 -9
xml -10 -152
8 KB 以下のユーザー定義型 -3 -151
8 KB を超えるユーザー定義型 JDBC Driver 2.0 では使用できません。 -151
geography -4 -151
geometry -4 -151
hierarchyid -4 -151
time -9 92
日付 -9 91
datetime2 -9 93
datetimeoffset -9 -155

次に示す getColumns メソッドの使い方の例では、AdventureWorks2022 サンプル データベースの Person.Contact テーブルに関する情報を取得します。

import java.sql.*;  
public class c1 {  
   public static void main(String[] args) {  
      String connectionUrl = "jdbc:sqlserver://localhost:1433;encrypt=true;databaseName=AdventureWorks;integratedsecurity=true";  
  
      Connection con = null;  
      Statement stmt = null;  
      ResultSet rs = null;  
  
      try {  
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  
         con = DriverManager.getConnection(connectionUrl);  
         DatabaseMetaData dbmd = con.getMetaData();  
         rs = dbmd.getColumns("AdventureWorks", "Person", "Contact", "FirstName");  
  
         ResultSet r = dbmd.getColumns(null, null, "Contact", null);  
         ResultSetMetaData rm = r.getMetaData();   
         int noofcols = rm.getColumnCount();  
  
         if (r.next())  
            for (int i = 0 ; i < noofcols ; i++ )  
            System.out.println(rm.getColumnName( i + 1 ) + ": \t\t" + r.getString( i + 1 ));  
      }  
  
      catch (Exception e) {}  
      finally {}  
   }  
}  

参照

SQLServerDatabaseMetaData のメソッド
SQLServerDatabaseMetaData のメンバー
SQLServerDatabaseMetaData クラス