yoni
[39][JDBC] Eclipse Java project와 MySQL Driver 연동, Movie 테이블, String, StringBuffer, StringBuilder의 특징 본문
java of educational by contents
[39][JDBC] Eclipse Java project와 MySQL Driver 연동, Movie 테이블, String, StringBuffer, StringBuilder의 특징
yoni-1117 2018. 12. 15. 17:39[01] Eclipse Java project와 MySQL Driver 연동
1. 이클립스 Java project에서의 MySQL 드라이버 연동
1) 환경 설정 페이지로 이동합니다.
2) [Libraries] 탭을 누릅니다.
[Add External JARs...] 버튼을 클릭합니다.
3) jar library 파일을 추가합니다.
4) 등록된 jar library 파일을 확인합니다.
[02] 문자열 처리
1. String, StringBuffer, StringBuilder의 특징
1) String
- 단순한 하나의 문자열을 저장하는 기능을 합니다.
- 문자열 변경시 객체 생성이 계속 발생해 속도가 느립니다.
- 문자열 비교시 new를 이용하여 생성된 객체는 '==' 연산자로 값 비교가 안됨으로
equals() 메소드를 사용합니다.
2) StringBuffer: 문자열 변경시 메모리 연산이 진행되어 하나의 객체로 처리됨으로
속도가 빠릅니다.
[실행 화면]
1) java
2) java
3) 3254818
4) 3254818
5) 3254818
6) java
7) java가 아닙니다.
8) java
--------------------------
9) 0
10) 3254818
11) -1819859227
12) -610096846
javajspspring
--------------------------
13) 2018699554
14) 2018699554
15) 2018699554
16) 2018699554
javajspspring
--------------------------
17) 366712642
18) 366712642
19) 366712642
20) 366712642
javajspspring
▷ jdbc.StringTest.java
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------package jdbc;
public class StringTest {
public static void main(String[] args) {
String str1 = "java";
String str2 = new String("java");
String str3 = new String("왕눈이");
String str4 = new String("아로미");
String str5 = new String("투투");
System.out.println("1) " + str1);
System.out.println("2) " + str2);
System.out.println("3) " + str1.hashCode());
System.out.println("4) " + str2.hashCode());
System.out.println("5) " + "java".hashCode());
if (str1 == "java") {
System.out.println("6) java");
}
// new를 이용하면 객체를 생성하면 '==' 연산자로 값 비교를 못하게 막혀 있음
if (str2 == "java") {
System.out.println("7) java");
} else {
System.out.println("7) java가 아닙니다.");
}
if (str2.equals("java")) {
System.out.println("8) java");
}
System.out.println("--------------------------");
String dev = "";
System.out.println("9) " + dev.hashCode());
dev = dev + "java";
System.out.println("10) " + dev.hashCode());
dev = dev + "jsp";
System.out.println("11) " + dev.hashCode());
dev = dev + "spring";
System.out.println("12) " + dev.hashCode());
System.out.println(dev);
System.out.println("--------------------------");
StringBuffer sb = new StringBuffer();
sb.append("");
System.out.println("13) " + sb.hashCode());
sb.append("java");
System.out.println("14) " + sb.hashCode());
sb.append("jsp");
System.out.println("15) " + sb.hashCode());
sb.append("spring");
System.out.println("16) " + sb.hashCode());
System.out.println(sb.toString());
System.out.println("--------------------------");
StringBuilder builder = new StringBuilder();
builder.append("");
System.out.println("17) " + sb.hashCode());
builder.append("java");
System.out.println("18) " + sb.hashCode());
builder.append("jsp");
System.out.println("19) " + sb.hashCode());
builder.append("spring");
System.out.println("20) " + sb.hashCode());
System.out.println(sb.toString());
}
}
[03] MySQL과 JAVA연동(PreparedStatement)
1. 데이터베이스 연동 JAVA code
1) 데이터베이스 연결 Driver
MySQL: String jdbc = "org.gjt.mm.mysql.Driver";
Oracle: String jdbc = "oracle.jdbc.driver.OracleDriver"
2) 데이터베이스 연결 정보
MySQL: String url = "jdbc:mysql://localhost:3306/web?useUnicode=true&characterEncoding=euckr";
Oracle: String url = "jdbc:oracle:thin:@localhost:1521:XE";
Oracle: String jdbc = "oracle.jdbc.driver.OracleDriver"
2) 데이터베이스 연결 정보
MySQL: String url = "jdbc:mysql://localhost:3306/web?useUnicode=true&characterEncoding=euckr";
Oracle: String url = "jdbc:oracle:thin:@localhost:1521:XE";
3) 계정과 패스워드
MySQL: String user = "root";
String pass = "1234";
4) Class.forName("org.gjt.mm.mysql.Driver")
- memory로 클래스 소스를 로딩함, 객체는 생성하지 않음.
- 다양한 데이터베이스를 실행시에 연결하기위해 드라이버 클래스를
선택적으로 적용할 수 있도록 지원하는 기능입니다.(동적 라이브러리 로딩)
참고적으로 객체를 만들려면 newInstance() 메소드를 이용하나 JDBC에서는
개발자가 선언하지 않습니다.
5) con = DriverManager.getConnection(url, user, pass);
- con은 인터페이스임으로 객체를 생성할 수 없으나, Connection interface를
구현한 클래스로부터 생성된 객체를 할당받을 수 있습니다. 이런 클래스는
vendor(제조사)에서 구현하여 jar library 행태로 제공합니다.
2. DBMS 개발시 반복적으로 사용되는 공통 소스
-----------------------------------------------------------------------------------
sql = new StringBuffer();
sql.append("");
-----------------------------------------------------------------------------------
Oracle: String user = "system";
String pass = "1234";
4) Class.forName("org.gjt.mm.mysql.Driver")
- memory로 클래스 소스를 로딩함, 객체는 생성하지 않음.
- 다양한 데이터베이스를 실행시에 연결하기위해 드라이버 클래스를
선택적으로 적용할 수 있도록 지원하는 기능입니다.(동적 라이브러리 로딩)
참고적으로 객체를 만들려면 newInstance() 메소드를 이용하나 JDBC에서는
개발자가 선언하지 않습니다.
5) con = DriverManager.getConnection(url, user, pass);
- con은 인터페이스임으로 객체를 생성할 수 없으나, Connection interface를
구현한 클래스로부터 생성된 객체를 할당받을 수 있습니다. 이런 클래스는
vendor(제조사)에서 구현하여 jar library 행태로 제공합니다.
2. DBMS 개발시 반복적으로 사용되는 공통 소스
-----------------------------------------------------------------------------------
Connection con = null; // DBMS 연결
PreparedStatement pstmt = null; // SQL 실행
ResultSet rs = null; // SELECT 결과를 저장
StringBuffer sql = null; // SQL 문장
int count = 0; // 처리된 레코드 갯수
String className = "org.gjt.mm.mysql.Driver"; // MySQL 연결 Drvier
String url = "jdbc:mysql://localhost:3306/javadb?useUnicode=true&characterEncoding=euckr";
String user = "root";
String password = "1234";
try{
Class.forName(className); // memory로 클래스를 로딩함, 객체는 생성하지 않음.
con = DriverManager.getConnection(url, user, password ); // MySQL 연결
sql = new StringBuffer();
sql.append("");
pstmt = con.prepareStatement(sql.toString()); // SQL 실행 객체 생성
count = pstmt.executeUpdate(); // INSERT, UPDATE, DELETE
// rs = pstmt.executeQuery(); // SELECT
if (count == 1){
System.out.println("처리 성공");
}else{
System.out.println("처리 실패");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if (rs != null){ rs.close(); }
}catch(Exception e){ }
try{
if (pstmt != null){ pstmt.close(); }
}catch(Exception e){ }
try{
if (con != null){ con.close(); }
}catch(Exception e){ }
}
3. SQL
1) SQL을 먼저 개발하고 테스트가 끝난후 JAVA 개발을 시작합니다.
이때 작성된 SQL을 복사하여 JAVA에서 붙여서 사용합니다. 따라서
JAVA class에서 테스트가 되지 않은 SQL을 입력하여 사용하지 않습니다.
2) 설계 및 SQL 작성
1) SQL을 먼저 개발하고 테스트가 끝난후 JAVA 개발을 시작합니다.
이때 작성된 SQL을 복사하여 JAVA에서 붙여서 사용합니다. 따라서
JAVA class에서 테스트가 되지 않은 SQL을 입력하여 사용하지 않습니다.
2) 설계 및 SQL 작성
- 논리적 모델링 속성: 영화번호, 제목, 평점, 출연, 등록 날짜
- 물리적 모델링 컬럼: movieno, title, good, name, rdate
- 목록
- 물리적 모델링 컬럼: movieno, title, good, name, rdate
- 목록
movieno title good name rdate
------- ---------- ---- ------ ---------------------
1 스타트랙(2016) 10.0 크리스 파인 2017-07-28 14:57:35.0
2 월터(2013) 10.0 벤 스틸러 2017-07-28 14:57:36.0
3 암살(2015) 10.0 전지현 2017-07-28 14:57:37.0
3. SQL 작성
- CRUD 패턴 이용
- CRUD 패턴 이용
. C: Create, INSERT SQL, 등록 예) 글 등록, 상품 등록, 설문조사 등록, 회원 가입...
. R: Read, SELECT SQL, 조회, 목록, 검색, 많은 레코드의 페이지 분할 예) 글 목록...
. U: Update, UPDATE SQL 예) 글 수정, 주문 상품 갯수 수정, 예약 날짜 수정
. D: Delete, DELETE SQL 예) 글 삭제, 상품 주문 취소, 예약 취소...
▷ /src/jdbc/movie.sql
-----------------------------------------------------------------------------------
-- 논리적 모델링 속성: 영화번호, 제목, 평점, 출연, 등록 날짜
-- 물리적 모델링 컬럼: movieno, title, good, name, rdate
CREATE TABLE movie(
movieno INT NOT NULL AUTO_INCREMENT, -- 영화 번호
title VARCHAR(100) NOT NULL, -- 영화 제목(연도)
good FLOAT NOT NULL, -- 평점
name VARCHAR(30) NOT NULL, -- 출연
rdate DATETIME NOT NULL, -- 등록 날짜
PRIMARY KEY(movieno)
);
1) 등록
INSERT INTO movie(title, good, name, rdate)
VALUES('배틀스타 갤럭티카(미드, 2003)', 10.0, '매리 맥도넬', now());
INSERT INTO movie(title, good, name, rdate)
VALUES('인터스텔라(영화, 2014)', 10.0, '앤헤서웨이', now());
INSERT INTO movie(title, good, name, rdate)
VALUES('레미제라블(영화, 2012)', 10.0, '휴잭맨', now());
2) 목록
SELECT * FROM movie;
SELECT movieno, title, good, name, rdate
FROM movie
ORDER BY title ASC;
movieno title good name rdate
------- ------------------- ---- ------ ---------------------
3 레미제라블(영화, 2012) 10.0 휴잭맨 2018-08-28 16:50:33.0
1 배틀스타 갤럭티카(미드, 2016) 10.0 매리 맥도넬 2018-08-28 16:44:41.0
2 인터스텔라(영화, 2014) 10.0 앤헤서웨이 2018-08-28 16:48:44.0
SELECT movieno, title, good, name, rdate
FROM movie
ORDER BY movieno DESC;
movieno title good name rdate
------- ------------------- ---- ------ ---------------------
3 레미제라블(영화, 2012) 10.0 휴잭맨 2018-08-28 16:50:33.0
2 인터스텔라(영화, 2014) 10.0 앤헤서웨이 2018-08-28 16:48:44.0
1 배틀스타 갤럭티카(미드, 2016) 10.0 매리 맥도넬 2018-08-28 16:44:41.0
3) 조회
SELECT movieno, title, good, name, rdate
FROM movie
WHERE movieno = 1;
movieno title good name rdate
------- ------------------- ---- ------ ---------------------
1 배틀스타 갤럭티카(미드, 2016) 10.0 매리 맥도넬 2018-08-28 16:44:41.0
4) 수정
UPDATE movie
SET title= '배틀스타 갤럭티카(미드, 2004)', good=9.9, name='제이미 밤버'
WHERE movieno = 1;
SELECT movieno, title, good, name, rdate
FROM movie
WHERE movieno = 1;
movieno title good name rdate
------- ------------------- ---- ------ ---------------------
1 배틀스타 갤럭티카(미드, 2004) 9.9 제이미 밤버 2018-08-28 16:44:41.0
5) 삭제
SELECT * FROM movie;
DELETE FROM movie
WHERE movieno=3;
-----------------------------------------------------------------------------------
'java of educational by contents' 카테고리의 다른 글
[참고] Java + MyBATIS 3.4.1 + MySQL 5.6의 연동 및 JAR 배포 (0) | 2018.12.16 |
---|---|
[40][JDBC] 영화 정보 시스템, 등록, 목록, 조회, 수정, 삭제, MovieDAO.java 제작 ★ (0) | 2018.12.15 |
[38][JDBC] MySQL Data Type, 기본 SQL, 기본 SQL 실습, AUTO_INCREMENT (0) | 2018.12.15 |
[37][JDBC] JDBC 드라이버설정, Eclipse Data Source Explorer의 MySQL 설정 (0) | 2018.12.15 |
[36][JDBC] 서버 실행, 관리자 root계정 암호화, root 접속 설정 (0) | 2018.12.15 |
Comments