๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ/์ˆ˜์—… ๋‚ด์šฉ ์ •๋ฆฌ

jsp ์˜ jdbc - java์™€ DB ์—ฐ๋™

by 0_0๐Ÿ–ค 2023. 7. 31.
๋ฐ˜์‘ํ˜•

 

JDBC(Java Database Connectivity)๋Š” Java์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ API(Application Programming Interface)์ž…๋‹ˆ๋‹ค. ์ด API๋Š” SQL๊ณผ DBMS์— ๋Œ€ํ•œ Java์˜ ํ‘œ์ค€ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

JDBC๋Š” DBMS ์ข…๋ฅ˜์— ๊ด€๊ณ„ ์—†์ด ๋™์ผํ•œ ์ฝ”๋“œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด, DBMS ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋“œ๋ผ์ด๋ฒ„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒค๋”๊ฐ€ ์ œ๊ณตํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ์ด ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ด์šฉํ•ด ํ•ด๋‹น DBMS์™€ ์—ฐ๊ฒฐํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ CRUD(Create, Read, Update, Delete) ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

  1. ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋“œ: Class.forName() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ: DriverManager.getConnection() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  3. SQL ๋ฌธ์žฅ ์‹คํ–‰: Statement ๋˜๋Š” PreparedStatement ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , executeQuery() ๋˜๋Š” executeUpdate() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SQL ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ: SQL ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. SELECT ๋ฌธ์˜ ๊ฒฝ์šฐ ResultSet ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, INSERT/UPDATE/DELETE ๋ฌธ์˜ ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ๋œ ํ–‰์˜ ์ˆ˜๋ฅผ int ํ˜•์œผ๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  5. ์—ฐ๊ฒฐ ์ข…๋ฃŒ: ๋งˆ์ง€๋ง‰์œผ๋กœ close() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

 

JDBC(Java data base connectivity)

ํ”„๋กœ๊ทธ๋žจ ์ž‘์—… ์ˆœ์„œ 7๋‹จ๊ณ„


1๋‹จ๊ณ„ :๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ(mysql ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ)


02๋‹จ๊ณ„ :Connection๊ฐ์ฒด๋กœ DB์—ฐ๊ฒฐ
1)ip 2)port๋ฒˆํ˜ธ 3)db์ ‘์†id 4)db์ ‘์†๋น„๋ฒˆ 5)db๋ช…(sid,service name)

03๋‹จ๊ณ„ :Query์‹คํ–‰์„ ์œ„ํ•œ ์ค€๋น„
( statement ๋˜๋Š” PreparedStatement๊ฐ์ฒด์ƒ์„ฑ)

04๋‹จ๊ณ„ :Query์‹คํ–‰

05๋‹จ๊ณ„ :Query์‹คํ–‰๊ฒฐ๊ณผ ์‚ฌ์šฉ
(insert,update,delete์˜ ๊ฒฝ์šฐ ์ƒ๋žต ๊ฐ€๋Šฅ๋‹จ๊ณ„)

06๋‹จ๊ณ„ :statement ๋˜๋Š” PreparedStatement๊ฐ์ฒด ์ข…๋ฃŒ(close())


07๋‹จ๊ณ„ :DB์—ฐ๊ฒฐ(Connection ๊ฐ์ฒด) ์ข…๋ฃŒ(close())

 

 

 

DB ์—ฐ๋™ ์ค‘ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€

์œ„ 7๋‹จ๊ณ„๋กœ DB์™€ java ์—ฐ๋™์ž‘์—… ๋„์ค‘ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์• ๋Ÿฌ์‚ฌํ•ญ๋“ค์ด ๋ฐœ์ƒํ–ˆ์—ˆ๋‹ค.

 

1. ํฌํŠธ ๋„˜๋ฒ„ ์˜ค๋ฅ˜

 

javax.servlet.ServletException: com.mysql.cj.jdbc.exceptions.CommunicationsException: 
Communications link failure

DB ์ข…๋ฅ˜์— ๋งž๋Š” ํฌํŠธ ๋„˜๋ฒ„ ์ž‘์„ฑ๋„์ค‘ ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ๊ธฐ์ž…ํ•ด ์ƒ๊ธด ์• ๋Ÿฌ์‚ฌํ•ญ.

ํฌํŠธ ๋„˜๋ฒ„๋ฅผ ๋‹ค์‹œ ์ œ๋Œ€๋กœ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค.

 

 

 

 

2. ์ ‘์† ์•„์ด๋”” ์˜ค๋ฅ˜

 

javax.servlet.ServletException: java.sql.SQLSyntaxErrorException: Access denied 
for user 'dev48id'@'%' to database 'dev481db'

DB์—์„œ ์„ค์ •ํ•œ ์‚ฌ์šฉ์ž ID ์ž˜๋ชป ์ž…๋ ฅ์‹œ ์ƒ๊ธฐ๋Š” ์—๋Ÿฌ์ด๋‹ค.

 

 

 

 

3. ์ธ์ฝ”๋”ฉ ์ •๋ณด ์ž˜๋ชป๋œ ์ฝ”๋“œ ๊ธฐ์ž…

javax.servlet.ServletException: java.sql.SQLException: 
Unsupported character encoding 'euc1kr'

์ธ์ฝ”๋”ฉ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ๊ธฐ์ž…ํ•ด์„œ ์ƒ๊ธด ์˜ค๋ฅ˜

 

 

 

 

4. ๋“œ๋ผ์ด๋ฒ„ ๋งํฌ ์ •๋ณด ์ž‘์„ฑ ์˜ค๋ฅ˜

javax.servlet.ServletException: java.lang.ClassNotFoundException: 
com.mysql.jdbc1.Driver

SQL ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋”ฉ์„ ์œ„ํ•œ ๋“œ๋ผ์ด๋ฒ„ ์ •๋ณด ์ž‘์„ฑ์‹œ ์ž˜๋ชป๋œ ๊ฒฝ๋กœ๋ฅผ ๊ธฐ์ž…ํ•ด ์ƒ๊ธด ๋ฌธ์ œ

 

 

 

 

5. DB ์ข…๋ฅ˜ ์ž‘์„ฑ ์˜ค๋ฅ˜

javax.servlet.ServletException: java.sql.SQLException: No suitable driver found for 
jdbc:my1sql://localhost:3306/dev48db?useUnicode=true&characterEncoding=euckr

DB ์ •๋ณด ์ž‘์„ฑ์‹œ ์ž˜๋ชป๋œ ์ •๋ณด ์ž‘์„ฑํ•ด ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜

 

 

 

 

6. ์ปดํŒŒ์ผ ์˜ค๋ฅ˜

 

org.apache.jasper.JasperException: JSP๋ฅผ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

JSP ์ปดํŒŒ์ผ ํ•˜์ง€ ์•Š์•„ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋กœ ํด๋ž˜์Šค ํŒŒ์ผ import๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

<%@ page import = "java.sql.Connection" %>

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•