๋ฐ์ดํ„ฐ ์œ ํ˜•

ํ‘œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

"C:\Program Files\Java\jdk-17.0.3.1\bin\java.exe...
ID java.lang.Integer ์ง€๋Šฅ 4
์ด๋ฆ„ java.lang.string VARCHAR 12
์ˆ˜์ค€ java.lang.Integer ์ง€๋Šฅ 4
๋งŒ๋“  ๋‚ ์งœ java.sql.๋‚ ์งœ ๋‚ ์งœ 91
์ข…๋ฃŒ ์ฝ”๋“œ 0์œผ๋กœ ํ”„๋กœ์„ธ์Šค ์™„๋ฃŒ

์„ธ ๋ฒˆ์งธ ์—ด์—๋Š” INT , VARCHAR , DATE ์œ ํ˜•์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค . ์ด๋“ค์€ SQL ์„œ๋ฒ„ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ˆ˜๋‹จ์€ ๊ทธ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์€ ์–ด๋–ป๊ฒŒ Java ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์ •ํ™•ํžˆ JDBC๋กœ ํ‘œ์ค€ํ™”๋œ ๊ฒƒ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. JDBC ์ž‘์„ฑ์ž๋Š” SQL ์œ ํ˜• ๋ชฉ๋ก์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์ˆ˜๊ฐ€ ์žˆ๋Š” ํŠน์ˆ˜ ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

class java.sql.Types {
   public static final int CHAR         =   1;
   public static final int NUMERIC    	=   2;
   public static final int DECIMAL     	=   3;
   public static final int INTEGER      =   4;
   public static final int FLOAT        =   6;
   public static final int REAL         =   7;
  โ€ฆ
}

๋ฒˆํ˜ธ๋Š” ํด๋ž˜์Šค์˜ ์ผ๋ จ ๋ฒˆํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ SQL ์‚ฌ์–‘์˜ SQL ์œ ํ˜• ๋ชฉ๋ก์— ์žˆ๋Š” ID ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์˜ ์˜ˆ์—์„œ ๋ณธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ResultSet ํด๋ž˜์Šค์—๋Š” ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์œ ํ˜•์ด ์„œ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋…ผ๋ฆฌ๋Š” ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์œ ์šฉํ•œ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• SQL ๋ฐ์ดํ„ฐ ์œ ํ˜•
์ •์ˆ˜ getInt() ์ˆซ์ž, ์ •์ˆ˜, ์‹ญ์ง„์ˆ˜
ํ”Œ๋กœํŠธ getFloat() ์ˆซ์ž, ์ •์ˆ˜, ์‹ญ์ง„์ˆ˜, ์‹ค์ˆ˜, ์‹ค์ˆ˜
๋”๋ธ” getDouble() ์ˆซ์ž, ์ •์ˆ˜, ์‹ญ์ง„์ˆ˜, ์‹ค์ˆ˜, ์‹ค์ˆ˜
๋‚ ์งœ getDate() ๋‚ ์งœ, ์‹œ๊ฐ„, ํƒ€์ž„์Šคํƒฌํ”„
์‹œ๊ฐ„ getTime() ๋‚ ์งœ, ์‹œ๊ฐ„, ํƒ€์ž„์Šคํƒฌํ”„
ํƒ€์ž„์Šคํƒฌํ”„ getTimestamp() ๋‚ ์งœ, ์‹œ๊ฐ„, ํƒ€์ž„์Šคํƒฌํ”„
๋ฌธ์ž์—ด getString() ์ฐจ๋ฅด, ๋ฐ”์ฐจ๋ฅด

๋ชจ๋“  SQL ์œ ํ˜• ์ค‘์—์„œ ์ผ๋ถ€ ๊ทธ๋ฃน์€ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ˆซ์ž
  • ์‹œ๊ฐ„
  • ์œค๊ณฝ
  • ๋ฐ”์ดํŠธ ๊ฐœ์ฒด

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , getInt() ๋ฉ”์„œ๋“œ๋ฅผ ๋ณด์…จ๋‚˜์š” ?

JDBC ๋ฐ NULL

ResultSet ํด๋ž˜์Šค ์˜ getInt() ๋ฉ”์„œ๋“œ ์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๊นŒ ? ์„œ๋ช…์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

int getInt(column)

์ด ๋ฉ”์„œ๋“œ๋Š” Integer๊ฐ€ ์•„๋‹Œ int๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. JDBC ์œ ํ˜• Integer๊ฐ€ ์ƒ์„ฑ๋  ๋‹น์‹œ์—๋Š” ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ข‹์•„, ๋งํ•ด ๋ณด์ž. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— INT์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ NULL์ผ ์ˆ˜๋„ ์žˆ๋Š” INT NULL ์—ด์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์—ด์—์„œ null ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ชจ๋“  ๊ฒƒ์ด ๋‹น์‹ ์„ ์œ„ํ•ด ์ƒ๊ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜ 1 . Java์˜ SQL ์œ ํ˜•์ด ๋‚ ์งœ ๋˜๋Š” ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ์ฐธ์กฐ ์œ ํ˜•์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค . ์ด ์œ ํ˜•์˜ ๋ณ€์ˆ˜๋Š” null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜ 2 . ๊ธฐ๋ณธ ์œ ํ˜•์€ null์ผ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ getInt() ์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋Š” ๋‹จ์ˆœํžˆ ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค . int์˜ ๊ฒฝ์šฐ 0, float์˜ ๊ฒฝ์šฐ 0.0f, double์˜ ๊ฒฝ์šฐ 0.0d ๋“ฑ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ 0 ๋˜๋Š” NULL ์—ด์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๋‹น์€ ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜ 3 . ResultSet ํด๋ž˜์Šค์—๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ NULL ๋Œ€์‹  ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŠน๋ณ„ํ•œ wasNull() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค .

๋ชจ๋“  ๊ฒƒ์ด ๋‚ด๊ฐ€ ์—ฌ๊ธฐ์— ์“ด ๋Œ€๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:

ResultSet results = staatement.executeQuery("SELECT * FROM user");
    int level = results.getInt("level");

if (results.wasNull()) {
    System.out.println("Level is null");
} else {
   System.out.println("Level is " + level);
    }

getInt() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ null์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ wasNull() ๋ฉ”์„œ๋“œ๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด wasNull() ๋ฉ”์„œ๋“œ ๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ธฐ๋ณธ ์œ ํ˜•์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

ResultSet results = staatement.executeQuery("SELECT * FROM user");
    String name = results.getString("name");

 	if (results.wasNull()) {
 	    System.out.println("Name is null");
 	} else {
 	   System.out.println("User name is " + name);
    }

์ด๊ฒƒ์€ ๋ฌผ๋ก  ๋ชฉ๋ฐœ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ NullPointerException ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค . ๋ชจ๋“  ๊ฒƒ์—์„œ ๊ธ์ •์ ์ธ ๋ฉด์„ ํ™•์ธํ•˜์„ธ์š” :)

JDBC์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ…Œ์ŠคํŠธ๋ฅผ ๊ณ„์†ํ•ฉ์‹œ๋‹ค. getDate(column) ๋ฉ”์†Œ๋“œ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค . ๊ทธ์—๊ฒŒ ๋ฌด์Šจ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฉ”์„œ๋“œ์˜ ๊ฒฐ๊ณผ ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

java.sql.Date

null์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๊ทธ์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์„œ! ์˜ฌ๋ฐ”๋ฅธ ๋‚ ์งœ ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

java.util.Date

๊ทธ๋“ค์€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ์ด๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์— ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค...

20์„ธ๊ธฐ 70๋…„๋Œ€ ์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์‹œ๊ฐ„ ์ €์žฅ์„ ์œ„ํ•ด 3๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • DATE - ๋‚ ์งœ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค: ๋…„, ์›”, ์ผ.
  • TIME - ์‹œ๊ฐ„ ์ €์žฅ: ์‹œ, ๋ถ„, ์ดˆ.
  • TIMESTAMP - ํŠน์ • ์‹œ์ (๋‚ ์งœ, ์‹œ๊ฐ„ ๋ฐ ๋ฐ€๋ฆฌ์ดˆ)์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

์ฒ˜์Œ 10๋…„ ๋™์•ˆ Java ์–ธ์–ด์—๋Š” UNIX TIME ํ˜•์‹์œผ๋กœ ํŠน์ • ์‹œ์ (1970๋…„ ์ดˆ ์ดํ›„์˜ ๋ฐ€๋ฆฌ์ดˆ ์ˆ˜)์„ ์ €์žฅํ•˜๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ธ java.util.Date ๋งŒ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ JDBC ํ‘œ์ค€์˜ ์ž‘์„ฑ์ž๋Š” ํŠนํžˆ JDBC๋ฅผ ์œ„ํ•ด ์„ธ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ Java์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • java.sql.๋‚ ์งœ
  • java.sql.์‹œ๊ฐ„
  • java.sqlํƒ€์ž„์Šคํƒฌํ”„

๋”ฐ๋ผ์„œ ResultSet ์ธํ„ฐํŽ˜์ด์Šค ์˜ ๋ฉ”์†Œ๋“œ์—๋Š” ๊ณ ์ • ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

SQL ์œ ํ˜• ์ž๋ฐ” ์œ ํ˜• ๋ฐฉ๋ฒ•
๋‚ ์งœ java.sql.๋‚ ์งœ java.sql.date getDate()
์‹œ๊ฐ„ java.sql.์‹œ๊ฐ„ java.sql.Time getTime()
ํƒ€์ž„์Šคํƒฌํ”„ java.sql.ํƒ€์ž„์Šคํƒฌํ”„ java.sql.Timestamp getTimestamp()

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์—ฌ๊ธฐ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

"C:\Program Files\Java\jdk-17.0.3.1\bin\java.exe...
ID java.lang.Integer ์ง€๋Šฅ 4
์ด๋ฆ„ java.lang.string VARCHAR 12
์ˆ˜์ค€ java.lang.Integer ์ง€๋Šฅ 4
๋งŒ๋“  ๋‚ ์งœ java.sql.๋‚ ์งœ ๋‚ ์งœ 91
์ข…๋ฃŒ ์ฝ”๋“œ 0์œผ๋กœ ํ”„๋กœ์„ธ์Šค ์™„๋ฃŒ

์—ฌ๊ธฐ์— ๋ฌด์—‡์ด ๋น ์กŒ๋Š”์ง€ ๋งž์ถฐ๋ณด์„ธ์š”? Java DateTime API์— ๋‚˜ํƒ€๋‚œ ๋ฐ์ดํ„ฐ ์œ ํ˜•:

  • ํ˜„์ง€ ๋‚ ์งœ
  • ํ˜„์ง€ ์‹œ๊ฐ
  • LocalDateTime