getColumns メソッド (SQLServerDatabaseMetaData)
指定されたカタログで使用できるテーブル列の記述を取得します。
構文
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 オブジェクトです。
例外
解説
この 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 クラス