[JDBC] JDBC๋ž€?

JoJoยท2023๋…„ 7์›” 20์ผ
0

๐Ÿ’ก JDBC(Java DataBase Connectivity)๋ž€?


โœ”๏ธ ์ž๋ฐ”์—์„œ DB ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” API

  • Java์—์„œ DBMS ์—ฐ๋™์— ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ Connectioin ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ DBMS ๋ฐด๋”(vendor)๋ณ„ ๊ตฌํ˜„ํ•˜์—ฌ (jar ํŒŒ์ผ) DBMS์— ์ ‘์† ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ก JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋”ฉ ์ ˆ์ฐจ


  1. ๋“œ๋ผ์ด๋ฒ„ ๋“ฑ๋ก (๋“ฑ๋ก ์ „ Referenced Libraries -> ojdbc6.jar ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ!)

  2. DBMS ์—ฐ๊ฒฐ

  3. Statement ๊ฐ์ฒด ์ƒ์„ฑ(์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ์ค€๋น„, new Statement(); ๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๊ฐ์ฒด ์ƒ์„ฑ)

  4. SQL ์ „์†ก(์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰)

  5. ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ(SELECT ๊ตฌ๋ฌธ์˜ ๊ฒฝ์šฐ ResultSet ๋กœ ๋ฐ›์•„์•ผ ํ•จ)

  6. ์ž์› ํ•ด์ œํ•˜๊ธฐ(close())


โœ”๏ธ JDBC ๋“œ๋ผ์ด๋ฒ„๋ž€?

  • DBMS์™€ ํ†ต์‹ ์„ ๋‹ด๋‹นํ•˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค

  • DMBS ๋ณ„๋กœ ์•Œ๋งž์€ JDBC ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.(jar)

  • ๋กœ๋”ฉ์ฝ”๋“œ : Class.forName("JDBC๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„");

MySQL	: com.mysql.jdbc.Driver
Oracle	: oracle.jdbc.driver.OracleDriver
MSSQL	: com.microsoft.sqlserver.jdbc.SQLServerDirver

โœ”๏ธ JDBC URL ์ด๋ž€?

  • DBMS์™€์˜ ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์‹๋ณ„ ๊ฐ’

  • JDBC ๋“œ๋ผ์ด๋ฒ„์— ๋”ฐ๋ผ ํ˜•์‹์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ : jdbc:[DBMS]:[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹๋ณ„์ž]

MySQL	: jdbc:mysql://HOST:[:PORT]/DBNAME[?paran=value&param1=value2&...]
Oracle	: jdbd:oracle:thin:@HOST:PORT:SID
MSSQL	: jdbc:sqlserver://HOST[:PORT];databaseName=DB

โœ”๏ธ ์ฝ”๋“œ ๊ตฌ์„ฑ ์˜ˆ์‹œ

package com.kh.jdbc.day01.basic;

// sql ์— ์žˆ๋Š” ๋ชจ๋“ ๊ฑธ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ * ๋กœ ํ‘œ๊ธฐ
import java.sql.*;

public class JDBCRun {

	public static void main(String[] args) {
		
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String user = "KH";
		String password = "KH";
        // sql ์—์„œ ์ฟผ๋ฆฌ๋ฌธ ๋ณต์‚ฌํ•  ๋•Œ ; ๋นผ๊ณ  ๋ณต์‚ฌํ•ด์•ผ ํ•จ!
		String qaery = "SELECT EMP_NAME, SALARY FROM EMPLOYEE";	
		
		try {
			// 1. ๋“œ๋ผ์ด๋ฒ„ ๋“ฑ๋ก
            // Class.forName(""); -> ์ด ์ฝ”๋“œ๊ฐ€ ์žˆ์Œ์œผ๋กœ์จ ์ž๋ฃŒํŒŒ์ผ์„ ์“ธ ์ˆ˜ ์žˆ์Œ! 
            // checked exception -> try-catch๋ฌธ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.
			Class.forName("oracle.jdbc.driver.OracleDriver");	
																
			// 2. DBMS ์—ฐ๊ฒฐ ์ƒ์„ฑ
            // checked exception -> try-catch๋ฌธ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.
			Connection conn = DriverManager.getConnection(url, user, password);	
			
			// 3. ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰์ค€๋น„(Statement ๊ฐ์ฒด ์ƒ์„ฑ)
            // new ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ, ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ์ค€๋น„ ๋
			Statement stmt = conn.createStatement();	
			
			// 4. ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰(SELECT๋ฉด ResultSet), 5. ๊ฒฐ๊ณผ๊ฐ’ ๋ฐ›๊ธฐ(resultset์€ ํ…Œ์ด๋ธ”ํ˜•ํƒœ)
			ResultSet rset = stmt.executeQuery(qaery);
			
			// ํ›„์ฒ˜๋ฆฌ ํ•„์š” - ๋””๋น„์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ.
            // ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„๋•Œ๊นŒ์ง€ true, ์—†์œผ๋ฉด false ๋กœ ์ข…๋ฃŒ
			while(rset.next()) {	
            	// ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•จ.
				System.out.printf("์ง์›๋ช… : %s, ๊ธ‰์—ฌ : %s\n"
                , rset.getString("EMP_NAME"), rset.getInt(2));	
			}
			
			// 6. ์ž์›ํ•ด์ œ
			rset.close();
			stmt.close();
			conn.close();
			
		} catch (ClassNotFoundException e) {					
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}	
		
	}

}

- ๊ฒฐ๊ณผ๊ฐ’

profile
๊พธ์ค€ํžˆ

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2023๋…„ 7์›” 20์ผ

์ž˜ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ •๋ณด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ