자바 웹 개발자가 될거야/JAVA
[JDBC] 이클립스와 DB 연결 후 데이터 조회, 삽입
whitz
2021. 12. 13. 11:21
< 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 문장오류");
}