2023.06.20 수업
교재 : 자바 웹 개발 워크북
● JDBC 프로그래밍 준비
◎ MariaDB설치
- root 설정 잊지 않기(비밀번호 기억하기)
- UTF-8 설정하기
- 기본 포트번호 3306
* 데이터베이스 : Oracle, MSSQL, MySQL, MariaDB, Postgresql 등이 있음
◎ 데이터베이스 생성과 사용자 계정 추가
특정작업만 할 수 있게 권한을 제한해야함
○ 데이터베이스 생성
- DBeaver 또는 HeidiSQL이용
- 데이터베이스명 : webdb
○ 데이터베이스 사용자 계정 추가
Users : 마리아디비 사용자 계정
- sts의 DBeaver로 접속하여 데이터베이스 Users에 사용자 계정 추가(Create New User)
- Properities에서 name, 암호 작성하고, Schema Privileges에서 webdb에 설정 모두 체크 후 save
-> 오류 발생
○ 오류가 발생하니 하이드로 데이터베이스 생성 및 사용자 계정 추가
- 하이드 열어 신규 누르고 mariadb-root로 이름을 변경하고 데이터베이스 생성한 암호 입력하여 열기
- sts 에서 설정한 webdb 삭제하기
- (참고)오류가 발생하면 라이브러리 바꾸기
○ webdb 데이터베이스 생성
○ 데이터베이스 사용자 계정 추가
- 우선 기존에 있는 webuser 삭제
- 추가 눌러서 모든 곳에서 접속 설정
- 암호 설정
- 객체추가 눌러 webdb 체크하고 저장
-> 안된다면 쿼리(sql문)로 생성하기(사용자 생성)
CREATE USER '유저명'@'접속컴퓨터(호스트명)' IDENTIFIED BY'비밀번호';
'유저명'@'접속컴퓨터'에게 '비밀번호'인 데이터베이스 계정을 만든다
* 권한부여 (쿼리에 작성)
GRANT 설정할 권한종류(SELECT, INSERT, UPDATE, ALL(모든 권한)) PRIVILIGES ON 권한을 적용할 자원 TO 권한을 줄 대상자
GRANT ALL PRIVILEGES ON webdb.* TO 'webuser'@'%';
-> 'webuser'@'%' 유저에게 'webuser'.*(webdb의 모든 테이블)을 관리할 수 있는 권한을 준다
* FLUSH privileges; 변경된 내용을 mariadb에 서버 재시작 없이 바로 적용하라
* 권한 확인
show grants for '사용자이름'@'접속컴퓨터범위';
SHOW GRANTS FOR 'webuser'@'%';
-> '사용자이름'@'접속컴퓨터범위'의 유저가 어떤 권한을 가지고 있는지 보여라
* 생성된 계정 확인
- 데이터베이스와 계정을 추가한 후 다시 메뉴를 통해 점검
● 프로젝트 만들기
▶ 다이나믹웹 프로젝트 생성
- jdbcex 이름 설정 후 디폴트값 + 상자 체크 피니쉬
▷ 데이터베이스 설정 - MariaDB
-> webdb에만 접근 가능하게 설정
Database Navigater > 새 데이터베이스 연결 > MariaDB
- 아까 설정한 Username / Password 입력
- Test Connection을 이용하여 연결 확인
- localhost2의 Databases에 webdb가 생성되었는지 확인
- localhost2는 새로운 계정
▷데이터베이스 연동 테스트
- webdb 데이터베이스에 새sql 편집기 열기
- select now(); 작성하여 현재시간 확
▷ 자바와 데이터베이스를 연결하기 위한 라이브러리 다운
https://mvnrepository.com/
- JDBC라이브러리 다운
- MariaDB Java Client 검색 > 3.0.10 ver > jar 다운
MySQL Connector/J > 8.0.33 ver
- 다운 받은 파일 C:\app\java\jdbcex\src\main\webapp\WEB-INF\lib 경로에 붙여넣기
▷ 데이터베이스 테이블 생성
- 하이드sql 에서 tbl_todo 테이블 생성
-- webdb 사용하겠다 선언
USE webdb;
CREATE TABLE tbl_todo (
tno INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100) NOT NULL,
dueDate DATE NOT NULL,
finished TINYINT DEFAULT 0
);
▷ INSERT INTO 데이터 입력
- 데이터 추가
- tno의 칼럼의 값이 자동으로 생성되는 auto_increment로 지정되었기 때문에 별도로 지정하지 않음
INSERT INTO tbl_todo(title, dueDate, finished)
VALUES('Test...', '2022-12-31', 1);
▷ SELECT 확인
- 모든 데이터 확인하기
SELECT COUNT(*) FROM tbl_todo;
▷데이터 update
- set을 이용해서 특정 칼럼의 내용 수정
- where조건을 이용하여 수정하는 대상 데이터를 지정
- 몇 개의 데이터가 영향을 받았는지만 나옴
update tbl_todo set finished = 0, title = 'Not Yet...' where tno = 3;
▷데이터 delete
- where조건을 이용하여 삭제하는 대상 데이터를 지정
-> 지정하지 않으면 전부 삭제됨
delete from tbl_todo where tno > 5;
※ DML(insert/update/delete)과 쿼리(select)의 차이
- DML은 몇 개의 데이터가 처리되었는지 숫자로 결과 반환
-> 몇 개의 row가 추가/변경/삭제 되었는지 알려줌
- 쿼리는 실제 데이터를 반환
'백엔드 > 웹 개발' 카테고리의 다른 글
12 게시판 만들기 (0) | 2023.06.26 |
---|---|
11 게시판 만들기( JDBC 구현 ) (0) | 2023.06.23 |
9 (EL 표현식) (0) | 2023.06.23 |
8(JSTL + 게시판 만들기) (0) | 2023.06.22 |
7 (게시판 만들기) (0) | 2023.06.22 |