JAVA

[14회차-③] JAVA ( MySQL 데이터베이스)

킴크스 2021. 4. 11. 13:20

강의명 : 오픈프레임워크 활용 디지털융합 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);
		}
	} 	
}

mysql에서 삽입한 값을 확인할 수 있다

 

 

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