Sobes.tech
Middle

Uveďte hlavné typy údajov používané v JDBC a vysvetlite, ako sú spojené s dátovými typmi Java.

sobes.tech AI

Odpoveď od AI

SQL dátové typy Java dátové typy Popis
CHAR, VARCHAR, LONGVARCHAR String Reťazce znakov
NUMERIC, DECIMAL BigDecimal Čísla s pevnou čiarkou
BIT, BOOLEAN boolean Logické hodnoty
TINYINT byte Celé číslo od -128 do 127
SMALLINT short Celé číslo od -32768 do 32767
INTEGER int Celé číslo
BIGINT long Veľké celé číslo
REAL float Číslo s plávajúcou desatinnou čiarkou s jednoduchou presnosťou
FLOAT, DOUBLE double Číslo s plávajúcou desatinnou čiarkou s dvojitou presnosťou
BINARY, VARBINARY, LONGVARBINARY byte[] Binárne dáta
DATE java.sql.Date Dátum (rok, mesiac, deň)
TIME java.sql.Time Čas (hodina, minúta, sekunda)
TIMESTAMP java.sql.Timestamp Dátum a čas s milisekundami
BLOB java.sql.Blob Binárny objekt veľkého objemu
CLOB java.sql.Clob Reťazcový objekt veľkého objemu
ARRAY java.sql.Array Pole hodnôt
STRUCT java.sql.Struct Štruktúrovaný typ
REF java.sql.Ref Odkaz na štruktúrovaný typ
DATALINK java.net.URL Odkaz na externý zdroj
JAVA_OBJECT Object Serializovaný Java objekt (závisí od implementácie)
ROWID java.sql.RowId Identifikátor riadku (závisí od DBMS)
NCHAR, NVARCHAR, LONGNVARCHAR String Národné znaky reťazce
NCLOB java.sql.NClob Národný reťazcový objekt veľkého objemu
SQLXML java.sql.SQLXML XML dáta

JDBC (Java Database Connectivity) špecifikuje štandardné SQL typy dát v triede java.sql.Types. Tieto typy dát predstavujú číselné konštanty. JDBC ovládače mapujú tieto SQL typy na vhodné Java dátové typy pri čítaní dát z databázy (napríklad pomocou metód getXXX() triedy ResultSet) a pri zápise dát do databázy (napríklad pomocou metód setXXX() triedy PreparedStatement).

Väzba je určená tým, ako konkrétny ovládač databázy implementuje mapovanie medzi vnútornými typmi databázy a štandardnými java.sql.Types, a následne na Java dátové typy. Toto mapovanie je zdokumentované v špecifikácii JDBC a môže sa mierne líšiť medzi ovládačmi, hoci základné mapovania uvedené v tabuľke sú štandardné.

Príklad získania dát z ResultSet:

// Predpokladá sa, že rs je ResultSet
String name = rs.getString("column_name_varchar");
int id = rs.getInt("column_name_integer");
BigDecimal value = rs.getBigDecimal("column_name_numeric");
Date date = rs.getDate("column_name_date");

Príklad nastavenia parametrov v PreparedStatement:

// Predpokladá sa, že pstmt je PreparedStatement
String name = "Test Name";
int id = 123;
BigDecimal value = new BigDecimal("100.50");
Date date = new Date(System.currentTimeMillis());

pstmt.setString(1, name); // 1 - číslo parametra (začína od 1)
pstmt.setInt(2, id);
pstmt.setBigDecimal(3, value);
pstmt.setDate(4, date);

JDBC sa snaží zabezpečiť maximálnu kompatibilitu, ale pre špecifické alebo vendor-špecifické typy dát môžu byť potrebné špeciálne prístupy alebo použitie metód getObject() / setObject() s následným prevedením typov alebo kontrolou pomocou instanceof.