Freigeben über


getColumns-Methode (SQLServerDatabaseMetaData)

JDBC-Treiber herunterladen

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

SQLServerException

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