JDBC(Java Database Connectivity)๋ Java์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ธฐ ์ํ API(Application Programming Interface)์ ๋๋ค. ์ด API๋ SQL๊ณผ DBMS์ ๋ํ Java์ ํ์ค SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
JDBC๋ DBMS ์ข ๋ฅ์ ๊ด๊ณ ์์ด ๋์ผํ ์ฝ๋๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด, DBMS ์ฐ๊ฒฐ์ ์ํ ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๋๋ผ์ด๋ฒ๋ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒค๋๊ฐ ์ ๊ณตํ๋ฉฐ, ์ฌ์ฉ์๋ ์ด ๋๋ผ์ด๋ฒ๋ฅผ ์ด์ฉํด ํด๋น DBMS์ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ CRUD(Create, Read, Update, Delete) ํ ์ ์์ต๋๋ค.
- ๋๋ผ์ด๋ฒ ๋ก๋: Class.forName() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ: DriverManager.getConnection() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
- SQL ๋ฌธ์ฅ ์คํ: Statement ๋๋ PreparedStatement ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , executeQuery() ๋๋ executeUpdate() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ SQL ๋ฌธ์ฅ์ ์คํํฉ๋๋ค.
- ๊ฒฐ๊ณผ ์ฒ๋ฆฌ: SQL ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. SELECT ๋ฌธ์ ๊ฒฝ์ฐ ResultSet ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉฐ, INSERT/UPDATE/DELETE ๋ฌธ์ ๊ฒฝ์ฐ ์ ๋ฐ์ดํธ๋ ํ์ ์๋ฅผ int ํ์ผ๋ก ๋ฐ์ต๋๋ค.
- ์ฐ๊ฒฐ ์ข ๋ฃ: ๋ง์ง๋ง์ผ๋ก 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" %>
'๊ฐ๋ฐ ์ด์ผ๊ธฐ > ์์ ๋ด์ฉ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java - jsp๋ก ๋ค๋ฅธ ํด๋์ค import ํ๊ธฐ (0) | 2023.07.27 |
---|---|
jsp post,GET ๋ฐฉ์์ผ๋ก ๊ฐ ๊ฐ์ ธ์ค๊ธฐ (0) | 2023.07.26 |
Java - setting, getting ์์ ๋ด์ฉ ์ ๋ฆฌ (0) | 2023.07.11 |