본문 바로가기

자바 웹 개발자가 될거야/JAVA

[JDBC] 이클립스와 DB 연결 후 데이터 조회, 삽입

 

< DB 연결 >

 

- 이클립스에서 DB를 연결하여 동작해볼거다

- MySQL에서 데이터베이스와 테이블을 먼저 생성해보았다

 

 

① DB 테이블 생성

 

create database javadb

create table student(name varchar(10) not null, dept varchar(20) not null, id char(7) not null, primary key(id));

 

 

- insert문 이용해서 테이블 안에 데이터 값들도 넣었다

 

 

- select문 이용해서 데이터가 잘 들어갔는지 확인 (컬럼 순서 다르게 배치했음)

 

② DB 연결

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcEx2 {

	public static void main(String[] args) {
		String DRIVER = "com.mysql.jdbc.Driver";
		String DBURL ="jdbc:mysql://localhost:3306/javadb";
		String DBID="root";
		String DBPW="1234";
		
		try {
			// 1. 드라이버로드
			Class.forName(DRIVER);
			// 2. 디비연결
			Connection con = DriverManager.getConnection(DBURL, DBID, DBPW);
			System.out.println("연결되었습니다.");
			con.close();
		} catch (ClassNotFoundException e) {
			System.out.println("JDBC 드라이버를 찾을 수 없습니다.");
		} catch (SQLException e) {
			System.out.println("DB연결 오류");
		}

	}

}

 

 

 

- 메서드로 둬서 메인메서드에 간단하게 표현하기

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JdbcEx2 {

	public static void main(String[] args) {
		dbInit();
	}
	
	static void dbInit() {
		
		String DRIVER = "com.mysql.jdbc.Driver";
		String DBURL ="jdbc:mysql://localhost:3306/javadb";
		String DBID="root";
		String DBPW="1234";
		
		try {
			// 1. 드라이버로드
			Class.forName(DRIVER);
			// 2. 디비연결
			Connection con = DriverManager.getConnection(DBURL, DBID, DBPW);
			System.out.println("연결되었습니다.");
			con.close();
		} catch (ClassNotFoundException e) {
			System.out.println("JDBC 드라이버를 찾을 수 없습니다.");
		} catch (SQLException e) {
			System.out.println("DB연결 오류");
		}
		
	}

}

 

 

 

③ DB 데이터 값 들고오기

 

 

- ResultSet 클래스

 

  · SQL ( select ) 구문 줬을 때 결과를 들고 오는 클래스

 

- PreparedStatment 인터페이스

 

  · SQL 문 안에 매개변수들을 쉽게 삽입 가능

  · 새로운 매개변수들과 함께 쉽게 재사용 가능

  · 실행된 구문의 성능 향상

 

public class JdbcEx2 {
	
	static Connection con;

	public static void main(String[] args) {
		dbInit();
		
	try {
		String sql = "select * from student where id =?";
		PreparedStatement preparedStatement = con.prepareStatement(sql);
		preparedStatement.setString(1,"3");
		ResultSet result = preparedStatement.executeQuery();
            
		while(result.next()) {
			System.out.println(result.getString(1));
			System.out.println(result.getString(2));
			System.out.println(result.getString(3));
		}
		con.close();
	}catch(Exception e) {
			
		}
	}

 

  · 위의 DB 연결 코드에서 Connection con을 선언했는데 지역변수다.  메인메서드에서 사용하기 위해서 멤버 변수로 선언

  · id가 3인 행 조회

  · .get변수타입으로 컬럼값들을 가져옴

 

 

④ DB에 데이터 값 삽입하기

 

- sql 변수에 insert문 이용

- 삽입하는 건 executeUpdate(); / 조회하는 건 executeQuery();

 

	try {
			
			String sql = "insert into student(id,name,dept) values(?,?,?)";
			PreparedStatement pre = con.prepareStatement(sql);
			pre.setString(1, "4");
			pre.setString(2, "홍길동");
			pre.setString(3, "멀");
			
			int rowsAffected = pre.executeUpdate();
			
			pre.setString(1, "5");
			pre.setString(2, "가나다");
			pre.setString(3, "멀");
			
			rowsAffected = pre.executeUpdate();
			
			
			sql = "select * from student";
			PreparedStatement preparedStatement = con.prepareStatement(sql);
			ResultSet result = preparedStatement.executeQuery();
			
			while(result.next()) {
				System.out.print(result.getString(1)+" ");
				System.out.print(result.getString(2)+" ");
				System.out.print(result.getString(3)+" ");
				System.out.println();
			}
			
			con.close();
		}catch(Exception e) {
			System.out.println("sql 문장오류");
		}