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