본문 바로가기
백엔드/웹 개발

10 (JDBC 프로그래밍 준비)

by study_yeon 2023. 6. 23.

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 삭제하기

- (참고)오류가 발생하면 라이브러리 바꾸기

에러가 발생하면 라이브러리  mysql로 설정하기

○ 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