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();

Categories:

Updated:

Leave a comment