[14회차-③] JAVA ( MySQL 데이터베이스)
강의명 : 오픈프레임워크 활용 디지털융합 SW엔지니어 양성 과정
강의 날짜 : 21.04.09
<데이터베이스>
1. 자바와 데이터 베이스
JDBC(Java DataBase Connectivity) 는 자바 API의 하나로서 데이터베이스에 연결하여서 데이터베이스 안의 데이터에 대하여 검색하고 데이터를 변경할 수 있게 한다.
2. MySQL실행
다운 후 명령프로프트에서 실행
mysql -uroot mysql -p입력, 패스워드 입력으로 실행 시작이 가능하고,
quit으로 종료가 가능하다.
3. 데이터베이스 및 테이블 생성
create database book_db로 먼저 데이터베이스를 만들어준 후,
use book_db로 데이터베이스를 변경해 준다.
이후 books테이블을 생성해 준다.
그 후 desc 로 확인 가능하다.
4. 값 입력
5. 값 확인
'*'은 All의 의미를 가지고 있다.
6. MySQL의 명령어
구분 | 명령어 | 설명 |
데이터 정의 명령어 (Data Definition Language) |
CREATE | 사용자가 제공하는 칼럼 이름을 가지고 테이블을 생성 컬럼의 데이터 타입도 지정 |
ALTER | 테이블에서 컬럼을 추가하거나 삭제 | |
DROP | 테이블의 모든 레코드를 제거하고 테이블의 정의 자체를 데이터베이스로부터 삭제 |
|
USE | 어떤 데이터베이스를 사용하는지 지정 | |
데이터 조작 명령어 (Data Manipulation Language) |
SELECT | 데이터베이스로부터 데이터를 쿼리하고 출력 |
INSERT | 새로운 레코드를 테이블에 추가 | |
DELETE | 지정된 레코드를 테이블로부터 삭제 | |
UPDATE | 테이블에서 레코드에 존재하는 값을 변경 |
7. JAVA와 MySQL 연동
연동하기 위해서는 프로젝트안에 jdbc가 들어있는지 확인해야 한다.
만약 들어있지 않다면 연결을 해주어야 연동이 가능하다.
① jdbc 경로가 없는 프로젝트에서
오른쪽 마우스를 클릭하여 Properties를 선택
② java Build Path → Libraries → ClassPath 선택
Add Library 선택
③ User Library 선택 후 Next
그리고 새로 뜨는 창의 오른쪽에 User Library를 선택
④ 오른쪽 가장 위의 New 선택
'jdbc' 를 치고 OK를 눌러 추가
jdbc 를 선택하고 Add External JARs를 선택
⑤ java프로그램을 다운 받았던 경로를 찾아서
jre → lib → ext 로 들어간다.
그 안의 mysql-connector를 찾아 선택
(없으면 다운받아서 jre->lib->ext 경로로 저장)
⑥ 그럼 jdbc 밑으로 추가된 것을 확인할 수 있다.
그 후 Apply and Close
8. JAVA와 MySQL 연동하여 이클립스에서 데이터베이스 확인하기
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectDatabase {
public static Connection makeConnection() {
String url = "jdbc:mysql://localhost/book_db";
String id = "root";
String password="apmsetup";
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver"); //JDBC드라이버 적재
System.out.println("드라이버 적재 성공!");
con = DriverManager.getConnection(url,id,password); //데이터베이스 연결
System.out.println("데이터베이스 연결 성공!");
} catch (ClassNotFoundException e) {
System.out.println("드라이버를 찾을 수 없습니다..");
} catch (SQLException e) {
System.out.println("연결에 실패하였습니다..");
}
return con;
}
public static void main(String[] args) throws SQLException{
// SQL문장 작성 및 전송
Connection con = makeConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM books;"); //books 전부 보여줘 명령어 전송
// 결과 집합 사용 후 연결 해제
while(rs.next()) {
int id = rs.getInt("book_id"); //정수형으로 가져옴
String title = rs.getString("title"); //문자열로 가져옴
System.out.println(id+" "+title);
}
}
}
9. ?로 아직 지정되지 않은 값을 사용하는 법
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SQLPrepared {
public static Connection makeConnection() {
String url = "jdbc:mysql://localhost/book_db";
String id = "root";
String password="apmsetup";
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("드라이버 적재 성공!");
con = DriverManager.getConnection(url,id,password);
System.out.println("데이터베이스 연결 성공!");
} catch (ClassNotFoundException e) {
System.out.println("드라이버를 찾을 수 없습니다..");
} catch (SQLException e) {
System.out.println("연결에 실패하였습니다..");
}
return con;
}
public static void main(String[] args) throws SQLException{
Connection con = makeConnection();
//책 제목과 가격을 아직 정해지지 않은(?) 저자에서 가져와줘
String query = "SELECT books.title , books.price FROM books WHERE publisher=?";
java.sql.PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, "QReilly"); //QReilly 저장
ResultSet rs = stmt.executeQuery(); //publisher가 QReilly인 곳에서 sql명령어 실행
while(rs.next()) {
String title = rs.getString("title");
int price = rs.getInt("price");
System.out.println(title+" "+price);
}
}
}