getColumns-Methode (SQLServerDatabaseMetaData)
Ruft eine Beschreibung der Tabellenspalten ab, die im angegebenen Katalog verfügbar sind.
Syntax
public java.sql.ResultSet getColumns(java.lang.String catalog,
java.lang.String schema,
java.lang.String table,
java.lang.String col)
Parameter
catalog
Ein String-Objekt, das den Katalognamen enthält.
schema
Ein String-Objekt, das das Schemanamenmuster enthält.
Tabelle
Ein String-Objekt, das das Tabellennamenmuster enthält.
col
Ein String-Objekt, das das Spaltennamensmuster enthält.
Rückgabewert
Ein SQLServerResultSet-Objekt.
Ausnahmen
Bemerkungen
Diese getColumns-Methode wird von der getColumns-Methode in der java.sql.DatabaseMetaData-Schnittstelle angegeben.
Das von der getColumns-Methode zurückgegebene Resultset enthält die folgenden Informationen:
Name | Typ | BESCHREIBUNG |
---|---|---|
TABLE_CAT | String | Der Katalogname. |
TABLE_SCHEM | String | Der Tabellenschemaname. |
table_name | String | Der Tabellenname. |
COLUMN_NAME | String | Der Spaltenname. |
DATA_TYPE | smallint | Der SQL-Datentyp aus "java.sql.Types". |
TYPE_NAME | String | Der Name des Datentyps. |
COLUMN_SIZE | int | Die Genauigkeit der Spalte. |
BUFFER_LENGTH | smallint | Die Übertragungsgröße der Daten. |
DECIMAL_DIGITS | smallint | Die Dezimalstellen der Spalte. |
NUM_PREC_RADIX | smallint | Die Basis der Spalte. |
NULLABLE | smallint | Gibt an, ob in der Spalte NULL-Werte zugelassen sind. Es kann sich um einen der folgenden Werte handeln: columnNoNulls (0) columnNullable (1) |
ANMERKUNGEN | String | Die der Spalte zugeordneten Kommentare. Hinweis: SQL Server gibt für diese Spalte immer NULL zurück. |
COLUMN_DEF | String | Der Standardwert der Spalte. |
SQL_DATA_TYPE | smallint | Der Wert des SQL-Datentyps, wie er im TYPE-Feld des Deskriptors angezeigt wird. Diese Spalte entspricht der Spalte DATA_TYPE mit Ausnahme der Datentypen datetime und interval (SQL 92). Diese Spalte gibt immer einen Wert zurück. |
SQL_DATETIME_SUB | smallint | Untertypcode für die Datentypen datetime und interval (SQL 92). Bei allen anderen Datentypen gibt diese Spalte NULL zurück. |
CHAR_OCTET_LENGTH | int | Die maximale Anzahl von Bytes in der Spalte. |
ORDINAL_POSITION | int | Der Index der Spalte innerhalb der Tabelle. |
IS_NULLABLE | String | Gibt an, ob in der Spalte NULL-Werte zulässig sind. |
SS_IS_SPARSE | smallint | Besitzt den Wert 1, wenn die Spalte eine Sparsespalte ist, andernfalls 0.1 |
SS_IS_COLUMN_SET | smallint | Besitzt den Wert 1, wenn die Spalte die column_set-Sparsespalte ist, andernfalls 0. 1 |
SS_IS_COMPUTED | smallint | Zeigt an, ob eine TABLE_TYPE-Spalte eine berechnete Spalte ist. 1 |
IS_AUTOINCREMENT | String | "YES", wenn die Spalte automatisch inkrementiert wird. "NO", wenn die Spalte nicht automatisch inkrementiert wird. "" (leere Zeichenfolge), wenn vom Treiber nicht ermittelt werden kann, ob die Spalte automatisch inkrementiert wird. 1 |
SS_UDT_CATALOG_NAME | String | Der Name des Katalogs, der den benutzerdefinierten Typ (UDT) enthält. 1 |
SS_UDT_SCHEMA_NAME | String | Der Name des Schemas, der den benutzerdefinierten Typ (UDT) enthält. 1 |
SS_UDT_ASSEMBLY_TYPE_NAME | String | Der benutzerdefinierte Typ (UDT) für den vollqualifizierten Namen. 1 |
SS_XML_SCHEMACOLLECTION_CATALOG_NAME | String | Der Name des Katalogs, in dem ein XML-Schemasammlungsname definiert ist. Wenn der Katalogname nicht gefunden werden kann, enthält diese Variable eine leere Zeichenfolge. 1 |
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME | String | Der Name des Schemas, in dem eine XML-Schemaauflistung definiert ist. Wenn der Schemaname nicht gefunden werden kann, handelt es sich dabei um eine leere Zeichenfolge. 1 |
SS_XML_SCHEMACOLLECTION_NAME | String | Name der XML-Schemaauflistung. Wenn der Name nicht gefunden werden kann, handelt es sich dabei um eine leere Zeichenfolge. 1 |
SS_DATA_TYPE | tinyint | Der SQL Server-Datentyp, der von erweiterten gespeicherten Prozeduren verwendet wird. Hinweis: Weitere Informationen zu den Datentypen, die von SQL Server zurückgegeben werden, finden Sie in der SQL Server-Onlinedokumentation unter „Datentypen (Transact-SQL)“. |
(1) Diese Spalte ist nicht vorhanden, wenn Sie eine Verbindung mit SQL Server 2005 (9.x) herstellen.
Hinweis
Weitere Informationen zu den Daten, die von der getColumns-Methode zurückgegeben werden, finden Sie in der SQL Server-Onlinedokumentation unter „sp_columns (Transact-SQL)“.
Der Microsoft SQL Server JDBC-Treiber 3.0 weist die folgenden Behavior Changes im Vergleich zu früheren Versionen auf:
Die DATA_TYPE-Spalte wurde folgendermaßen geändert:
SQL Server-Datentyp | Rückgabetyp des JDBC-Treibers 2.0 (oder bei einer Verbindung mit SQL Server 2005 (9.x)) und zugeordnete numerische Konstante | Rückgabetyp des JDBC-Treibers 3.0 bei Verbindung mit SQL Server 2008 (10.0.x) und höheren Versionen |
---|---|---|
benutzerdefinierter, 8 KB überschreitender Typ | LONGVARBINARY (-4) | VARBINARY (-3) |
geography | LONGVARBINARY (-4) | VARBINARY (-3) |
Geometrie | LONGVARBINARY (-4) | VARBINARY (-3) |
varbinary(max) | LONGVARBINARY (-4) | VARBINARY (-3) |
nvarchar(max) | LONGVARCHAR (-1) oder LONGNVARCHAR (JDBC 4) (-16) | VARCHAR (12) oder NVARCHAR (JDBC 4) (-9) |
varchar(max) | LONGVARCHAR (-1) | VARCHAR (12) |
time | VARCHAR (12) oder NVARCHAR (JDBC 4) (-9) | TIME (-154) |
date | VARCHAR (12) oder NVARCHAR (JDBC 4) (-9) | DATE (91) |
datetime2 | VARCHAR (12) oder NVARCHAR (JDBC 4) (-9) | TIMESTAMP (93) |
datetimeoffset | VARCHAR (12) oder NVARCHAR (JDBC 4) (-9) | microsoft.sql.Types.DATETIMEOFFSET (-155) |
Die COLUMN_SIZE-Spalte wurde folgendermaßen geändert:
SQL Server-Datentyp | Rückgabetyp in JDBC Driver 2.0 | Rückgabetyp in JDBC Driver 3.0 |
---|---|---|
nvarchar(max) | 1073741823 | 2147483647 (Datenbankmetadaten) |
Xml | 1073741823 | 2147483647 (Datenbankmetadaten) |
benutzerdefinierter Typ mit weniger oder genau 8 KB | 8 KB (Resultset- und Parametermetadaten) | Die tatsächliche von der gespeicherten Prozedur zurückgegebene Größe |
time | Die Länge (in Zeichen) der Zeichenfolgendarstellung des Typs, wobei die maximal zulässige Genauigkeit der Komponente für Sekundenbruchteile vorausgesetzt wird. | |
date | entspricht "time" | |
datetime2 | entspricht "time" | |
datetimeoffset | entspricht "time" |
Die BUFFER_LENGTH-Spalte wurde folgendermaßen geändert:
SQL Server-Datentyp | Rückgabetyp in JDBC Driver 2.0 | Rückgabetyp in JDBC Driver 3.0 |
---|---|---|
benutzerdefinierter, 8 KB überschreitender Typ | 2147483647 |
Die TYPE_NAME-Spalte wurde folgendermaßen geändert:
SQL Server-Datentyp | Rückgabetyp in JDBC Driver 2.0 | Rückgabetyp in JDBC Driver 3.0 |
---|---|---|
varchar(max) | text | varchar |
varbinary(max) | image | varbinary |
Die DECIMAL_DIGITS-Spalte wurde folgendermaßen geändert:
SQL Server-Typ | JDBC Driver 2.0 | JDBC Driver 3.0 |
---|---|---|
time | NULL | 7 (oder – falls angegeben – kleiner) |
date | NULL | NULL |
datetime2 | NULL | 7 (oder – falls angegeben – kleiner) |
datetimeoffset | NULL | 7 (oder – falls angegeben – kleiner) |
Die SQL_DATA_TYPE-Spalte wurde folgendermaßen geändert:
SQL Server-Datentyp | SQL Server 2008-Datenwert im JDBC-Treiber 2.0 | SQL Server 2008-Datenwert im JDBC-Treiber 3.0 |
---|---|---|
varchar(max) | -10 | –9 |
nvarchar(max) | -1 | –9 |
Xml | -10 | –152 |
benutzerdefinierter Typ mit weniger oder genau 8 KB | -3 | –151 |
benutzerdefinierter, 8 KB überschreitender Typ | Nicht verfügbar in JDBC Driver 2.0 | –151 |
geography | –4 | –151 |
Geometrie | –4 | –151 |
hierarchyid | –4 | –151 |
time | –9 | 92 |
date | –9 | 91 |
datetime2 | –9 | 93 |
datetimeoffset | –9 | –155 |
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie mithilfe der getColumns-Methode Informationen für die Tabelle „Person.Contact“ aus der AdventureWorks2022-Beispieldatenbank zurückgegeben werden können.
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 {}
}
}
Weitere Informationen
SQLServerDatabaseMetaData-Methoden
SQLServerDatabaseMetaData-Elemente
SQLServerDatabaseMetaData-Klasse