백엔드/Database

Jdbc(ojdbc) 연결 | TIL_133

ran4 2022. 8. 12. 17:22

https://www.youtube.com/playlist?list=PLq8wAnVUcTFWxwoc41CqmwnO-ZyRDL0og

강의를 듣고 정리한 내용입니다

 


 

실습용 사용자 추가

cmd

sqlplus > sys as sysdba로 접속 후 사용자를 추가한다

create user 사용자이름 identified by 비밀번호;

예시 : create user test identified by 0000;

 

1행에 오류:

ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.

라는 메시지와 함께 추가가 되지 않는다면

 

생성할 계정명 앞에 C## 키워드를 붙이거나

ALTER SESSION SET“_ORACLE_SCRIPT”=TRUE; 를 입력하면 된다

 

 

모든 권한 부여(실 사용시 권장하지 않음)

grand dba to 사용자이름;

grant dba to test;

 

계정 확인 show user;

 

계정 전환

CONNECT 계정/암호;

CONNECT SYS/암호 AS SYSDBA;

 

계정 삭제(잘못 만들었거나 실습이 끝난경우 사용)

DROP USER 계정명 CASCADE;

 

 

테이블 생성 후 테이블 조회 //추가되었는지 확인

desc notice;

desc member;

 

 


첫 번째 게시글 제목 출력하기

String url = "jdbc:oracle:thin:@localhost:1521/xepdb1";
-> oracle 18xe 버전이라 이 코드는 오류가 났다
"jdbc:oracle:thin:@localhost:1521/xe" 로 고쳤더니 실행되었다

String sql = "select * from notice";

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url, "test", "****");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);


if(rs.next()) { //컬럼 출력
String title = rs.getString("TITLE");
System.out.println(title);
}

if(rs != null) rs.close();
if(st != null) st.close();
if(conn != null) conn.close();

 

콘솔창으로 실행시 아무것도 뜨지 않으면 정상 작동된 것이다

-> 아직 테이블에 데이터가 없기 때문이다  

 

 

[실습 중간 발생한 오류] 

OracleServiceXE 서비스가 중지되어서 오류 발생

시작을 눌러서 실행시켰다

 

리스너 오류가 뜬 경우

cmd 창에서

  1. lsnrctl
  2. start //리스너 시작
  3. service

-> 현재 실행되고 있는 서비스를 SID와 함께 확인 가능하다

orcl이 xe인지 xepdb1인지 확인 후 xepdb1 부분을 수정하면 된다

 

**이 방법으로도 해결이 되지 않는 경우 참고하기 좋은 블로그

https://shanepark.tistory.com/223

 

 

데이터 삽입

insert into notice values(1, ‘JDBC란 무엇인가?’, ‘newlec’, ‘aaa’, SYSDATE, 0, ‘’);

oracle은 데이터 추가 삭제 후 commit;을 해야한다

 

정상적으로 추가와 연결이 되었다면 다음과 같이 콘솔창에 뜰 것이다