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

}

}


}



+ Recent posts