JDBC
JDBC
์ฐ๋ฆฌ๋ ํ๋ฆฐํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ์ํด ํ๋ฆฐํธ์ ๋ง๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํด์ค๋ค.
JAVA์์๋ DB์ ์ ๊ทผํ๊ธฐ์ํด DB์ ๋ง๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ์ฌ ์ฌ์ฉํ๋ค.
JAVA ์์ฒด๋ก๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋
๋ฆฝ์ ์ด์ง ์์ ์ข
์์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
os์ ๋
๋ฆฝ์ ์ธ ์ธ์ด์ธ ์ด์ ๋ ๊ฐ๋ฐํ๊ฒฝ๊ณผ ํด์ ์ง์ํด์ฃผ๋ JDK๋ฅผ ์ค์นํด์์ด๋ค.
JAVA์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ธฐ ์ํด JDBC๋ฅผ ์ค์นํ๋ค. JDBC๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฉฐ ์ด๋ ํ DB๋ฅผ ์ฌ์ฉํ์ฌ๋ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค๊ฐ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ด ์ฉ์ดํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์ 3๊ฐ์ ๊ณผ์ ์ผ๋ก ๋ณผ ์ ์๋ค.
- Connection ( ์ฐ๊ฒฐ )
- Statement ( sql ์ ๊ทผ๊ณผ ์ฌ์ฉ )
- ResultSet
์์ ๊ฐ์ ๊ณผ์ ์ ์๋ฐ์์๋ ์ ๊ณตํด์ฃผ๋ Package java.sql์ ์์๋ณด์.
DriverManager
DriverManager๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ์ ๋ณด๋ฅผ ๋ฐ์์จ๋ค.
์ฐ๊ฒฐํ๋ method๋ก getConnection()์ด ์๋๋ฐ ์ค๋ฒ๋ก๋ฉ์ด ๋์ด ์์ด ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด๋๋ค.
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
String id = "scott"
String pwd = "tiger"
Class.forName("oracle.jdbc.driver.OracleDriver"); // ๊ฐ์ ํด๋นํ๋ CLASS ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
DriverManager dr = DriverManager.getConnection(url, id, pwd);
// getConnection(String url, String user, String password)
// getConnection(String url, Properties info)
// getConnection(String url)
์์ method๋ ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ sql์ id์ pwd๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ๊ทผํ๋ค.
Connection
์๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ์ ์ฐ๊ฒฐ์ ํ๋ interface ๊ธฐ๋ฐ class์ด๋ค.
DriverManager์ getConnection์ ํตํด ๋ฆฌํด๋ฐ์ ๋ฐ์ ๋ฐ์ดํฐ์ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ
๋ฆฌํดํ์
์ผ๋ก Connection์ ๋ฐ๋๋ค
Connection con = null;
con = DriverManager.getConnection(url, id, pwd); // ์ถํ์ try/catch๋ฅผ ์ํด null๊ฐ ์ด๊ธฐํ
con.createStatement()
// ์๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐ๊ฒฐํ๋ method
์์ ๊ฐ์ด DriverManager๋ฅผ con์ ๋์ (์ด๊ธฐํ)๋ฅผ ํตํด ์๋ฐ์ ์ฐ๊ฒฐ์ ํ๋ค.
Statement
์ฐ๊ฒฐ์ ํ๋ค๋ฉด ์ด์ Console์์ sqlplus๋ฅผ ํตํด ์ฌ์ฉํ๋ ์์ฑ๊ณผ ์ ๋ ฅ, ์์ , ์ญ์ , ๋ฑ.. ์ ์ง์ํ๋ Statement ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
API๋ฅผ ์ฐพ์๋ณธ๋ค๋ฉด ๋ ๋ง์ method๋ฅผ ์์ ๋ณผ ์ ์๋ค.
Statement stmt = null;
stmt = con.createStatement(); // ์ถํ์ try/catch๋ฅผ ์ํด null๊ฐ ์ด๊ธฐํ
//Statement stmt = null;
//String insert = "INSERT INTO member VALUES (" + no + ", '" + id + "', '" + pwd + "')d";
//stmt = con.createStatement();
//System.out.println("number TABLE DATA INSERT ์๋ฃ" + stmt.executeUpdate(insert));
// ๋ณดํธ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ method
// sql์ ๋ช
๋ น๋ฌธ์ผ๋ก ์์ฑ๋ string์ ๋ฃ์ด์ค๋ค
executeQuery(String sql) // ํ
์ด๋ธ create์ ์ฌ์ฉํ๋ค.
executeUpdate(String sql) // ํ
์ด๋ธ insert , update , delete ์ ์ฌ์ฉ
ResultSet
์์ฑ๊ณผ ์ถ๊ฐ, ์์ , ์ญ์ ๋ฅผ ํ๋ค๋ฉด ํ ์ด๋ธ์ ์ถ๋ ฅํ๋ ResultSet์ ์ฌ์ฉํ๋ค. ์์ ๋ค๋ค๋ ๋ด์ฉ๋ค์ ์ข ํฉ์ ์ผ๋ก ์ ๋ฆฌํด ๋ณด์
public static void main(String[] args) {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe"; // ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฃผ์
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
// try/catch ์์ธ์ฒ๋ฆฌ๋ฅผ ์ํ ์ด๊ธฐํ์ค์
try {
Class.forName("oracle.jdbc.driver.OracleDriver"); //
con = DriverManager.getConnection(url, "scott", "tiger"); // Connection ( ์ฐ๊ฒฐ )
stmt = con.createStatement(); // Statement ( ์ฌ์ฉ )
rs = stmt.executeQuery("SELECT * FROM member"); // ResultSet ( ๊ฒฐ๊ณผ ์ถ๋ ฅ )
while(rs.next()) { // rs.next()๋ฅผ ํตํด ํ
์ด๋ธ ํ์ ๋ถ๋ฌ์จ๋ค.
ํ๊ฐ์ด ์กด์ฌํ์ง ์์์ false
System.out.println("ํ์์ ๋ณด => ๋ฒํธ : " +rs.getInt(1) + // get์ ํตํด ํด๋น ์ปฌ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ด
",id : " +rs.getString(2) +
",pwd : "+ rs.getString(3));
}
} catch (ClassNotFoundException e) {
System.out.println("\n==> Driver Loading ์ Exception ๋ฐ์ \n");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("\n==> JDBC ์ ์ฐจ ์ค Exception ๋ฐ์ : " + e.getErrorCode());
e.printStackTrace();
} finally {
try {
if(stmt != null)
stmt.close();
if (rs != null)
rs.close();
if (con != null)
con.close();
} catch (SQLException e) {
System.out.println("\n==> JDBC ์ ์ฐจ ์ค Exception ๋ฐ์ : " + e.getErrorCode());
e.printStackTrace();
}
}
}
PrepareStatement
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ ๋ Statement ๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๋ ๋ฒ์ ๋ฐฐ์ ๋ค.
๊ทผ๋ฐ sql ๋ช
๋ น๋ฌธ์ ์์ฑํ๋ค๋ณด๋ฉด ๋ถํธํจ์ ๋๊ผ์๊ฒ์ด๋ค.
java๋ฌธ๋ฒ๊ณผ sql ๋ฌธ๋ฒ์ ์งํค๋ฉด์ ์์ฑํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
Statement stmt = null;
String insert = "INSERT INTO member VALUES (" + no + ", '" + id + "', '" + pwd + "')d";
stmt = con.createStatement();
System.out.println("number TABLE DATA INSERT ์๋ฃ" + stmt.executeUpdate(insert));
์ด๋ฌํ ๋ฌธ๋ฒ์ ๋ถํธํจ ๋๋ฌธ์ PrepareStatement ๋ฅผ ์ง์ํ๋ค.
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(url, "scott", "tiger");
pr = con.prepareStatement("INSERT INTO member VALUES(?, ?, ?)"); // sql๋ฌธ๋ฒ์ ๋จผ์ ์ง์ ํด์ค๋ค.
pr.setInt(1, no); // ์ฒซ๋ฒ์งธ ? ์ no ๋ฅผ ์ค๋ค
pr.setString(2, id); // ๋๋ฒ์งธ ? ์ id ๋ฅผ ์ค๋ค.
pr.setString(3, pwd); // ์ธ๋ฒ์งธ ? ์ pwd ๋ฅผ ์ค๋ค.
int suc = pr.executeUpdate();
Leave a comment