Oracle SQL : JDBC
JDBC: 데이터베이스 연결 프로그래밍
“데이터베이스”는 왜 필요한가?
프로그램을 실행한 결과를 화면에 출력하면
전원을 끄고 나면 그 결과는 날아가 버린다. ==> 휘발성
그래서 그 결과를 영구적으로 보관하려면 파일을 이용한다.
그러나, 파일은 이해관계에 있는 여러 사람들이
항상 최신의 정보를 공유하기에는 어려움이 있다.
그래서 이해관계에 있는 사람들이 항상 최신의 정보를 공유하도록
자료를 한 곳에 모아둔 것이
“데이터베이스”
데이터베이스를 잘 사용하도록 도와주는 시스템 “데이터베이스 관리 시스템” DataBase Management System DBMS
DBMS 종류는 oracle, ms-sql, my-sql, mariadb 등이 있다. 우리나라에서는 oracle을 많이 사용한다.
속성(열, 필드) || |이름|국어|영어|수학| |—-|–|–|–| |홍길동|100|80|90| ->레코드(행, row) |이순신|80|90|100| |유관순|70|100|100|
테이블은 행과 열로 구성된 자료의 집합 데이터베이스는 서로 관련이 있는 테이블들이 모여서 데이터베이스를 구성한다.
테이블 생성 명령어
create tabel 테이블이름(속성이름 자료형, 속성이름 자료형, ....)
문자열의 자료형 ==> varchar2(100) 숫자 자료형 ==> number
sql>create table student(name varchar2(20),kor number, eng number,math number);
테이블 구조를 파악하는 명령어
sql>desc student;
테이블에 자료를 추가하는 데이터베이스 명령어
insert into 테이블이름 values(값1, 값2, ......);
이때 값의 수와 순서는 테이블의 구조와 같아야한다. 오라클에서 문자열을 반드시 홋따옴표로 묶어야한다.
insert into student values('홍길동',100,80,90);
이렇게 추가한 내용을 DBMS에 반영하려면 반드시 commit을 해야한다.
만약, 이렇게 추가한 내용을 취소 하려면 rollback을 한다.
테이블의 자료를 조회하기
select * from 테이블이름; select * from student;
==> 자바에서 데이터베이스에 연결 ==> Java DataBase Connect ==> JDBC 연결 프로그래밍
JDBC 프로그래밍 순서
—->자바에서 데이터베이스 연결 프로그래밍 순서
-
JDBC드라이버를 메모리로 로드한다. Class.forName(oracle.jdbc.driver.OracleDriver);
-
DB서버에 연결한다. Connection conn =DriverManager.getConnection(“서버의주소”,”사용자이름”,”암호”);
-
데이터베이스 명령을 실행할 Statement 객체를 생성한다. Statement stmt = conn.createStatement();
-
데이터베이스 명령을 실행한다. int re = stmt.executeUpdate(명령어) ==> 데이터베이스에 변경이 있는 명령을 시킬때 사용 ==> 성공적으로 명령을 수행한 레코드의 수(int형)를 반환
ResultSet rs = stmt.executeQuery(명령어) ==> 데이터베이스의 내용을 읽어오는 명령을 시킬때 사용 ==> 읽어온 결과를 ResultSet으로 반환
-
일처리를 한다.
-
사용했던 자원을 모두 닫아 준다. rs.close(); stmt.close(); conn.close();
실행했더니 다음과 같은 오류가 발생한다. 예외발생: oracle.jdbc.driver.OracleDriver => 드라이버가 어디있는지 몰라서 그렇다. 드라이브의 위치를 알려줄 것. (이클립스에 포함시켜주어야 한다.)
오라클 설치된 다음의 경로에 C:\app\a863a\product\21c\dbhomeXE\jdbc\lib
해결방법
이클립스 프로젝트이름에 오른쪽 단추 ->Properties ->JavaBuildPath ->Libraries ->C:\app\a863a\product\21c\dbhomeXE\jdbc\lib\ojdbc8.jar ->apply and close
sql> SQL> ed ff
SQL> @ff SQL> select * from goods;
NO ITEM QTY PRICE —– ———- —– ——– 1 색종이 10 1,500
자료의 수정
update 테이블이름 set 컬럼이름 =값, 컬럼이름=값, .. where 컬럼이름=값
update goods set qty= 20, price=2000, item=’공책’ where no=7;
자료의 삭제
delete 테이블명 where 컬럼이름=값; delete goods where no=7;
- 상품번호를 매개변수로 전달받아 데이터베이스에서 삭제를 하는 메소드를 ㅏㄴ든다.
- 삭제 버튼을 누르면 텍스트필드의 상품번호를 갖고와서 삭제하는 메소드를 호출
–
CRUD