[JDBC] mariadb와 java 연결

혜쿰·2023년 7월 28일
1
post-custom-banner

📌개념

JDBC란? Java Database Connectivity의 약자로 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스이다.

먼저, mariadb-java-client 라이브러리를 다운받고, build path를 통해 불어온다.
build path -> configure build path... / class path에서 외부파일로 불러오는 점을 명심하자!

Class.for.Nam -> DriveManager -> Connection -> Statement -> ResultSet
의 순서로 진행된다.

Class.forName : 드라이버 찾아서 로딩
DriverManager : Connection 활성화
Connection : 데이터베이스와 연결, DriverManager.getConnection()으로 얻음 (DB와 interface 가능)
Statement : SQL문을 실행하며 executeQuery(), executeUpdate(), execute()메소드를 이용한다.
ResultSet : select 에 의해 클라이언트 컴퓨터로 loading된 결과물

📌연결방법

package pack5db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DbTest1 {
	private Connection conn = null;
	private Statement stmt = null;
	private ResultSet rs = null;
	public DbTest1() {
		try {
			Class.forName("org.mariadb.jdbc.Driver");
		} catch (Exception e) {
			System.out.println("로딩 실패 :" +e);
			System.exit(0);
		}
		
		try {
			conn = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/test","root","비밀번호");
		} catch (Exception e) {
			System.out.println("연결 실패 : "+e);
			System.exit(0);
		}
		
		try {
			stmt = conn.createStatement();
			
			// rs = stmt.executeQuery("select * from sangdata");
			// rs = stmt.executeQuery("select code,sang,su,dan from sangdata"); // 순서 바꿔도 상관 x 
			rs = stmt.executeQuery("select code,sang,su,dan from sangdata"); // 칼럼명 바꿔도 됨
			//                              1번째  2번째 3   4
			
			/* 이렇게 하면 행마다 저 문장들을 계속 써야함
			rs.next(); // 레코드 포인터 이동 / 자료 있으면 true, 없으면 false 
			String code = rs.getString("code"); // 칼럼의 이름
			String sang = rs.getString("sang");
			String su = rs.getString("su");
			String dan = rs.getString("dan");
			System.out.println(code + " " +sang + " " + su+ " "+dan);
			*/
			
			while(rs.next()) {
				String code = rs.getString("code"); // 칼럼의 이름
				String sang = rs.getString(2); // 이름대신 순서도 가능
				// String su = rs.getString("su");
				// String dan = rs.getString("dan");
				int su = rs.getInt("su");
				int dan = rs.getInt("dan");
				int keum = su * dan;
				System.out.println(code + " " +sang + " " + su+ " "+dan+" "+keum);

			}
			String sql = "select count(*) from sangdata";
			rs = stmt.executeQuery(sql);
			rs.next(); // pointer 이동
			System.out.println("건수 : " +rs.getInt(1));
			
			
		} catch (Exception e) {
			System.out.println("SQL 처리 실패 : " +e);
		} finally {
			try {
				if(rs != null) rs.close();
				if(stmt != null) rs.close();
				if(conn != null) rs.close(); // 다 사용한 자원 반납하기
			} catch (Exception e2) {
			
			}
		}
	}
	public static void main(String[] args) {
		System.out.println("자바 기본 빌드 도구 사용");
		new DbTest1();

	}

}
post-custom-banner

0개의 댓글