-
JAVA ์๋ฐ JDBC ์ค๋ผํด DB ์ฐ๋JAVA 2020. 8. 18. 09:16
๐ฏ ์๋ฐ JDBC ์ค๋ผํด DB ์ฐ๊ฒฐ๋ฐฉ๋ฒ์ ์์๋ณธ๋ค.
์๋ฐ JDBC
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ๊ทผํ ์ ์๋ ์๋ฐ API์ด๋ค.
์ค๋ผํด DB ์ฐ๋ํ๊ธฐ
์๋ฐ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ฅ ๋จผ์ ์ค๋ผํด ๋๋ผ์ด๋ฒ๋ฅผ ์ฐพ์์ผํ๋ค. JDBC ํ๋ก์ ํธ๋ฅผ ํ ๋๋ง๋ค ํญ์ ๋๋ผ์ด๋ฒ๋ฅผ buildPath์ ์ถ๊ฐํ๋ ์ค์ ์ด ํ์ํ๋ค.
์ค๋ผํด ๋๋ผ์ด๋ฒ๊ฐ ์ ์ฅ๋ ํด๋ ์์น :
C:\app\User\product\11.2.0\dbhome_1\jdbc\lib
๋งค๋ฒ ์ ๊ธด ๊ฒฝ๋ก๋ฅผ ์ฐพ์๊ฐ๊ธฐ ํ๋ค ๋ ์งง์ ๊ฒฝ๋ก์ ํด๋๋ฅผ ํ๋ ํ์ ๋ณด๊ดํ๋ค.
์๋ฐ ํ๋ก์ ํธ ์ด๋ฆ์์ ์ค๋ฅธ์ชฝ๋ง์ฐ์ค๋ฅผ ํด๋ฆญํ๊ณ Build Path -> Configure Build Path๋ฅผ ํด๋ฆญํ๋ค.
Libraries ํญ์์ ์ธ๋ถ jarํ์ผ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ๊ณ oracle_jar ํ์ผ์ ์ถ๊ฐํ๋ค.
์ฝ๋ ์คํ ์์
//1. 4๊ฐ์ง ์ ๋ณด String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String userid = "scott"; String passwd = "tiger";
๊ฐ์ฅ ๋จผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋์ ์ํ 4๊ฐ์ง ์ ๋ณด๋ฅผ ๋ฌธ์์ด์ ์ ์ฅํ๋ค. ์ค๋ผํด์ ์ ์ฅ๋ scott ๊ณ์ ์ DB๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ค.
//2.๋๋ผ์ด๋ฒ ์์ฑ Connection con = null; //db ์ฐ๊ฒฐ Statement stmt null; //connect๋ฅผ ์ด์ฉํด sql๋ช ๋ น์ ์คํํ๋ ๊ฐ์ฒด ResultSet rs = null; //sql์คํ ํ select ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด
๋๋ผ์ด๋ฒ ์ฐ๋์ ์ํด ์ฌ์ฉํ๋ Connection, sql ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ Statement, ๋ช ๋ น ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ResultSet์ ์ฝ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ๊ฐ๋จํ ์ด๋ฆ์ ๋ณ์๋ฅผ ๋ง๋ค์๋ค.
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
์ฝ๋์ ๋นจ๊ฐ์ค์ด ์๊ธฐ๋ฉด ํด๋ฆญํด์ java.sql์ importํ๋ค. ํด๋์ค์ ๊ฐ์ฅ ์์ import ์ฝ๋๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ค.
์์ธ์ฒ๋ฆฌ๋ฅผ ์ํด ์๋ ์ฝ๋๋ถํฐ try ๋ธ๋ก ์์ ์์ฑํ๋ค.
1. ๋๋ผ์ด๋ฒ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉํ๋ค.
Class.forName(driver);
2. ์ค๋ผํด ์ฐ๊ฒฐ( Connection ์ฐ๊ฒฐ) url, userid, passwd ์ฌ์ฉ
con = DriverManager.getConnection(url, userid, passwd);
3. sql๋ฌธ์ ์์ฑํ๋ค. ์คํธ๋ง ์์ ์ธ๋ฏธ์ฝ๋ก ์ ๋ถ์ด์ง ์๋๋ค.
String sql = "select deptno, dname, loc from dept";
4. SQL ์คํ์ค๋น ๋จ๊ณ. Statement, PreparedStataement ๋ ๊ฐ์ฒด๋ฅผ ์ฃผ๋ก ์ด์ฉํ๋ค. Connection์์ ๋ช ๋ น์ ์คํํด์ค Statement ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค.
stmt = con.createStatement();
5. Statement์ sql๋ช ๋ น ๊ฒฐ๊ณผ๋ฅผ ResultSet์ผ๋ก ๋ฐ์์ ์คํํ๋ค. select๋ฌธ์ผ ๊ฒฝ์ฐ executeQuery()๋ฅผ ์ฌ์ฉํ๋ฉฐ, DML๋ฌธ์ผ ๊ฒฝ์ฐ์ executeUpdate()๋ฅผ ์ฌ์ฉํ๋ค.
rs = stmt.executeQuery(sql);
6. while ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด rs๋ก ๋ฐ์ ์ ๋ณด๋ฅผ ์ปฌ๋ผ๋ช ์ผ๋ก ์ ๊ทผํด์ ์ถ๋ ฅํ๋ค. ์ฌ๊ธฐ๊น์ง try๋ฌธ์ด ๋๋ฌ๋ค.
while(rs.next()) { int deptno = rs.getInt("deptno"); String dname = rs.getString("daname"); String loc = rs.getString("loc"); System.out.println(deptno + "\t"+dname + "\t"+loc); }
while ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ถ๋ ฅํ ๋ ์ปฌ๋ผ๋ช ๋์ ์ปฌ๋ผ ์์์ ๋ง๋ ๋ฒํธ ๋๋ ๋ณ์นญ์ ์ฌ์ฉํ ์ ์๋ค.
while(rs.next()) { int deptno = rs.getInt(1); String dname = rs.getString(2); String loc = rs.getString(3); System.out.println(deptno + "\t"+dname + "\t"+loc); }
7. catch๋ฌธ์ผ๋ก ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ค.
}catch(ClassNotFoundException e){ e.printStackTrace(); }catch(SQLException e) { e.printStackTrace(); }
8. finally๋ฌธ์์ ์์์ ๋ฐ๋ฉํ๋ค. ์คํํ๋ ๋ฐ๋ ์์๋ก ์์ฑํ๋ค.
finally { try { if(rs!=null)rs.close(); if(stmt!=null)stmt.close(); if(con!=null)con.close(); }catch(SQLException e) { e.printStackTrace(); } }
์ฝ๋ ์ ์ฒด ํ์ธํ๊ธฐ
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBC_Test { public static void main(String[] args) throws SQLException{ String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String userid = "scott"; String passwd = "tiger"; Connection con = null; Statement stmt = null; ResultSet rs = null; try { Class.forName(driver); con = DriverManager.getConnection(url, userid, passwd); String sql = "select deptno, dname, loc from dept"; stmt = con.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { int deptno = rs.getInt("deptno"); String dname = rs.getString("dname"); String loc = rs.getString("loc"); System.out.println(deptno + "\t" + dname + "\t" + loc); } } catch (ClassNotFoundException e) { e.getStackTrace(); } catch (SQLException e) { e.getStackTrace(); } finally { try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if ( con != null) con.close(); } catch (SQLException e) { e.getStackTrace(); } } } }
SQL๋ฌธ ์ฐ์ตํ๊ธฐ
String sql = "select deptno, dname, loc from dept where dname IN('SALES')";
SELET๋ฌธ์ผ๋ก ๋ถ์์ด๋ฆ์ด ์ธ์ผ์ฆ์ธ ๋ฐ์ดํฐ๋ง ์ถ๋ ฅํ๊ธฐ
String name = "SALES"; String sql = "select deptno x, dname, loc from dept where dname='"+ name+"'";
statement๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ด๋ ๊ฒ ๋ฐ์ดํ๊ฐ ๋ค์ด๊ฐ ์กฐ๊ฑด๋ฌธ์ ์์ฑํ๊ธฐ ๊น๋ค๋ก์์ง๋ค.
PreparedStatement pstmt = null; String sql = "select deptno, dname, loc from dept"; pstmt = con.prepareStatement(sql); rs = pstmt.executeQuery();
๊ทธ๋์ ์์ผ๋ก๋ ์ฃผ๋ก PreparedStatement๋ฅผ ์ฌ์ฉํ๋ค.
String sql2 = "select deptno, dname, loc from dept where dname='๊ฐ๋ฐ' or dname='์์ '"; pstmt = con.prepareStatement(sql2); rs = pstmt.executeQuery(); while (rs.next()) { int deptno = rs.getInt(1); String dname = rs.getString(2); String loc = rs.getString(3); System.out.println(deptno + "\t" + dname + "\t" + loc); }
๋ถ์์ด๋ฆ์ด '๊ฐ๋ฐ' ์ด๊ฑฐ๋ '์์ '์ธ ๋ถ์์ ๋ฐ์ดํฐ๋ง ์ถ๋ ฅํ๊ธฐ
int deptno= 13; String deptname="๊ฐ๋ฐ"; String loc="์์ธ"; String sql="insert into dept (deptno,dname,loc)" +"values ("+deptno+", '"+deptname+"','"+ loc+"')"; stmt = con.createStatement(); int result= stmt.executeUpdate(sql); System.out.println("์คํ๋ ๋ ์ฝ๋ ๊ฐฏ์:" + result);
INSERT๋ฌธ ์ฌ์ฉํ๊ธฐ. DML ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ executeUpdate() ํจ์๋ฅผ ํธ์ถํ๋ค.
String sql = "insert into dept(deptno, dname, loc)" + "values (?,?,?)"; pstmt = con.prepareStatement(sql); pstmt.setInt(1, 99); pstmt.setString(2, "์ธ์ผ"); pstmt.setString(3, "๊ฒฝ๊ธฐ"); int n = pstmt.executeUpdate(); System.out.println(n + "๊ฐ์ ๋ ์ฝ๋ ์ ์ฅ");
INSERT๋ฌธ์ ์ฌ์ฉํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ. values์์ ์ถ๊ฐํ ๋ฐ์ดํฐ ๋์ ? ๋ฅผ ์ฌ์ฉํ๋ค. ๋์ค์ PreparedStatement ๊ฐ์ฒด์ set๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋์ ์ผ๋ก ์ค์ ํ ์ ์๋ค. ?๊ธฐํธ์ ์์(1๋ถํฐ์์)๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ๊ฐ์ set๋ฉ์๋๋ก ์ค์ ํ๋ค. set๋ฉ์๋๋ ์ปฌ๋ผ ๋ฐ์ดํฐํ์ ๋ฐ๋ผ์ setInt, setString (์์, ๊ฐ) ์ด๋ ๊ฒ ์ฌ์ฉํ๋ค.
String dname = "์์ "; String loc = "์ ์ฃผ"; int deptno = 90; String sql = "update dept set dname='" + dname + "', loc='" + loc + "'" + "where deptno=" + deptno; stmt = con.createStatement(); int num = stmt.executeUpdate(sql); System.out.println("์คํ๋ ๋ ์ฝ๋ ๊ฐฏ์: " + num);
update๋ฌธ ์ฌ์ฉํ๊ธฐ
๐ NEXT : JDBC ๋ฌธ์ ์ฐ์ตํ๊ธฐ
๋ฐ์ํ'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA ์๋ฐ JDBC ์ฐ์ต - ์ํ์ ๋ณด ์กฐํํ๊ธฐ (0) 2020.08.20 JAVA ์๋ฐ JDBC ๋ฌธ์ ์ฐ์ต (0) 2020.08.19 JAVA ์๋ฐ ์ ์ถ๋ ฅ I/O, ํ์ผ์ฒ๋ฆฌ (0) 2020.08.17 JAVA ์๋ฐ ํต์ฌํด๋์ค (0) 2020.08.16 JAVA ์๋ฐ Object ํด๋์ค equals(), toString() (0) 2020.08.15