Mivel az SQL típusok és a Java típusok különböznek egymástól, ezért a paraméter átadás megoldásához szükséges, hogy új úgynevezett JDBC típusokatat vezessünk be, melyek reprezentálják az SQL típusokat. Ezeket a típusokat a java.sql.Types osztály definiálja. A már felépített kapcsolaton keresztül lehetőségünk nyílik arra, hogy mindenféle hasznos információkat kérdezzünk le az adatbázisunkról, illetve a lekérdezés eredménytáblájáról. Előbbit a DatabaseMetaData interfészen, utóbbit a ResultSetMetaData interfészen keresztül kérhetjük le.
A DatabaseMetaData interfészt megvalósító objektumhoz a Connection objektum getMetaData metódusával juthatunk mely az alábbi fontosabb metódusokat tartalmazza:
- getTypeInfo – egy ResultSet típusú objektumot ad vissza, mely tartalmazza az adatbázis illetve a JDBC meghajtó által támogatott JDBC típusokat.
- getUDTs – egy ResultSet típusú objektumot ad vissza, mely tartalmazza a felhasználói típusok leírását egy meghatározott keresési mintán belül. Felhasználói típusnak megadhatunk Types.DISTINCT, Types.STRUCT, és Types.JAVA_OBJECT típusokat, melyeket a későbbiekben részletezni fogok. Ezt a funkciót hiába próbáljuk MySQL esetén, nem fog visszaadni semmit csak egy üres ResultSet objektumot mivel nem támogatja a felhasználói adattípusokat, ellenben például a PostgreSQL adatbáziskezelővel szépen működik.
- getColumns – egy ResultSet típusú objektumot ad vissza, mely minden információt tartalmaz a táblákban lévő mezőkről egy meghatározott keresési mintán belül. Például: COLUMN_NAME, DATA_TYPE, TYPE_NAME, COLUMN_SIZE
A ResultSetMetaData interfészt megvalósító objektumhoz a ResultSet objektum getMetaData metódusával juthatunk mely az alábbi fontosabb metódusokat tartalmazza:
- getColumnType – egy integer értéket ad vissza, mely reprezentálja az SQL-beli típust.
- getColumnTypeName – egy String értéket ad vissza, mely megnevezi az SQL-beli típust.
Típusmegfeleltetés
Az alábbi táblázat megmutatja, hogy adott JDBC típusnak milyen Java típus felel meg:
JDBC Type | Java Type |
---|
CHAR | String | VARCHAR | String | LONGVARCHAR | String | NUMERIC | java.math.BigDecimal | DECIMAL | java.math.BigDecimal | BIT | boolean | BOOLEAN | boolean | TINYINT | byte | SMALLINT | short | INTEGER | int | BIGINT | long | REAL | float | FLOAT | double | DOUBLE | double | BINARY | byte[] | VARBINARY | byte[] | LONGVARBINARY | byte[] | DATE | java.sql.Date | TIME | java.sql.Time | TIMESTAMP | java.sql.Timestamp | CLOB | Clob | BLOB | Blob | ARRAY | Array | DISTINCT | mapping of underlying type | STRUCT | Struct | REF | Ref | DATALINK | java.net.URL | JAVA_OBJECT | underlying Java class |
|
Az értékeket lekérdezni, beállítani illetve frissíteni a get<típus> , set<típus> és update<típus> kezdetű metódusokkal lehet.