JDBC를 사용하귀 위한 mysql-connector 설정 방법은 아래 포스팅을 참고하기 바랍니다.
https://hsunnystory.tistory.com/158?category=791615
JDBC란?
자바 프로그램 안에서 SQL을 실행하기 위해 데이터베이스를 연결해주는 응용프로그램 인터페이스
사용방법
1. 드라이버 로드
Class.forName("JDBC_DRIVER");
Oracle JDBC_DRIVER : oracle.jdbc.driver.OracleDriver
MSSQL JDBC_DRIVER : sun.jdbc.odbc.JdbcOdbcDriver
MySQL JDBC_DRIVER : org.git.mm.mysql.Driver / com.mysql.jdbc.Driver
2. 데이터베이스 연결
Connection conn = DriverManager.getConnection(DB_URL, ID, PW);
Oracle DB_URL = jdbc:oracle:thin:@ip:1521:ORCL
MSSQL DB_URL = jdbc:sqlserver:ip:1433;DatabaseName=DB명
MySQL DB_URL = jdbc:mysql://ip:3306/DB명
3. SQL문 실행을 위한 객체 생성
3.1 파라미터를 입력 받아 동적인 쿼리문을 실행할 경우
PreparedStatement pstmt = null;
pstmt = conn.prepareStatement();
3.2 정적인 쿼리문을 실행할 경우
Statement stmt = null;
stmt = conn.createStatement();
4. SQL문 실행
4.1 executeUpdate()
insert, update, delete등 리턴 값이 필요 없는 쿼리문일 때 사용
pstmt.executeUpdate(SQL);
stmt.executeUpdate(SQL);
4.2 executeQuery()
select등 리턴 값이 필요한 쿼리문일 때 사용
pstmt.executeQuery(SQL);
stmt.executeQuery(SQL);
4.3 쿼리실행 후 값을 받아올 경우
ResultSet rs = null;
rs = pstmt.executeQuery();
또는
rs = stmt.executeQuery();
그 다음
while(rs.next()){
String name = rs.getString("name");
}
rs.next()는 boolean을 리턴하는데 다음 레코드가 존재하면 true를 반환
5. 리소스 반납
finally 블럭에서 close()를 이용하여 리소스를 생성한 역순으로 반납
conn.close()
pstmt.close()
stmt.close();
6. 예제
1. 데이터 읽어오기
package test;
import java.sql.*;
import org.apache.log4j.Logger;
public class dbconn {
static Logger logger = Logger.getLogger(dbconn.class);
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://192.168.0.143:3306/test";
static final String USERNAME = "root";
static final String PASSWORD = "1234";
public static void main(String[] args) throws SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
stmt = conn.createStatement();
String sql1 = "select * from test";
rs = stmt.executeQuery(sql1);
while(rs.next()) {
String no = rs.getString("no");
String name = rs.getString("name");
System.out.println("no = "+no+" , "+"name = "+name);
}
}catch(SQLException se1) {
se1.printStackTrace();
}catch(Exception ex) {
ex.printStackTrace();
}finally {
rs.close();
stmt.close();
conn.close();
}
}
}
2. 데이터 입력하기
package test;
import java.sql.*;
public class dbpstmt {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://192.168.0.143:3306/test";
static final String USERNAME = "root";
static final String PASSWORD = "1234";
public static void main(String[] args) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
try {
String sql = "INSERT INTO test VALUES (?,?)";
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,3);
pstmt.setString(2, "LEE");
pstmt.executeUpdate();
}catch(SQLException e) {
e.printStackTrace();
}catch(Exception e) {
e.printStackTrace();
}finally {
pstmt.close();
conn.close();
}
}
}
'Programming > Java' 카테고리의 다른 글
[Java] Class파일 Java 변환/디컴파일 (0) | 2019.03.21 |
---|---|
[Java] String - 문자열<->배열 변환(toCharArray(), getBytes(), new String()) (0) | 2019.03.21 |
[Java] JDBC를 이용한 데이터베이스(MySQL) 연결 - 기본세팅 (0) | 2019.03.15 |
[Java] 스트림 - Reader / Writer 클래스 (0) | 2019.03.12 |
[Java] 입출력 - 스트림(Stream) 이란 (0) | 2019.03.11 |