Oracle

w ho
3 min readFeb 7, 2020

--

oracle에서 계정 생성

SQL PLUS 에 가서
— 사용자 계정 만들기 (javadb 계정 만들기)
create user javadb IDENTIFIED by javadb;
grant connect, resource, dba to javadb;

javadb 생성 된것을 확인

jdbcdriver는 이클립스에서 해당 프로젝트에서 Properties -> java build path ->libraries -> Add External JARS 에서 jdbc 찾아서 넣어줌

book table 만들기

create table book (id varchar(50) not null primary key,name varchar(50) not null,price  number(10) not null);

book에 대한 DTO( data transfer object ) 데이터베이스의 데이터를 사용

public class SAMPLEDTO {private String id = null;private String name = null;private int price=0;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}

DAO : 데이터를 가지고 이용 및 함수 사용 DATA ACESS OBJECT

public class SAMPLEDAO {public ArrayList<SAMPLEDTO> findALL() {ArrayList<SAMPLEDTO> list = new ArrayList<SAMPLEDTO>();try {Class.forName("oracle.jdbc.driver.OracleDriver");} catch (ClassNotFoundException e) {// 드라이버 없음System.out.println("드라이버 없음");e.printStackTrace();}String url ="jdbc:oracle:thin:@localhost:1521:orcl";String user="javadb";String password ="oracle";try {Connection  conn  = DriverManager.getConnection(url,user,password);Statement stmt = conn.createStatement();String sql ="select * from book";ResultSet  rs =stmt.executeQuery(sql);while(rs.next()){SAMPLEDTO DTO = new SAMPLEDTO();  // DTO에 SELECT 한 값들을 저장 DTO.setId(rs.getString(1));DTO.setName(rs.getString(2));DTO.setPrice(rs.getInt(3));list.add(DTO);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return list;}}

Main

public static void main(String[] args) {SAMPLEDAO DAO  = new SAMPLEDAO();ArrayList<SAMPLEDTO> book = DAO.findALL();for(SAMPLEDTO books : book){System.out.println(books.getId());}}

#jdbc 연동 #DAO # DTO

//1. JDBC에 대한 정리 및 순서 public class user {Connection cnn;Statement st;public user() {//1.driver 연결try {Class.forName("oracle.jdbc.driver.OracleDriver");} catch (ClassNotFoundException e) {System.out.println("드라이버 오류 ");}// 오라클 드라이버 연결String url ="jdbc:oracle:thin:@localhost:1521:orcl";//2. connectiontry {cnn = DriverManager.getConnection(url,"test","test");} catch (SQLException e) {System.out.println("연결오류");}}public void insert() {// 3. 4. 쿼리를 실행할 공간인  statement를 만들어 놓고 statement에서 쿼리 실행한 값을 ResultSet에 저장String sql = "insert into custumer values('1','김민준')";try {st = cnn.createStatement();ResultSet rs  =st.executeQuery(sql);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

기본기 외래키 설정

create table item (item_id int not null,
name varchar2(100),
CONSTRAINT intem_pk PRIMARY KEY(item_id)
);
create table item_detail(
item_id int not null,
detail VARCHAR2(100),
CONSTRAINT item_detail_pk PRIMARY key(item_id),
CONSTRAINT item_fk FOREIGN key(item_id) REFERENCES item(item_id)
);

시퀀시

시퀀시는 특정 값만큼 계속 증가시키기는 것을 설정

oracle에서 시퀀시를 생성하고 그 생성한 시퀀시를 적용할 테이블에서 insert나 select 와 같은 sql문에서 사용하면 자동으로 증가

-> insert로 예를 들어 sql 문에서 해당되는 값에 시퀀스를 넣어준다.

public int insert(Connection conn, Message message) throws SQLException{PreparedStatement pstmt = null;try{String sql = “insert into guestbook_message values(message_seq.NEXTVAL,?,?,?)”;pstmt = conn.prepareStatement(sql);pstmt.setString(2, message.getGuestName());pstmt.setString(3, message.getPassword());pstmt.setString(4, message.getMessage());return pstmt.executeUpdate();}finally{//JdbcUtil.close();pstmt.close();}}

오라클에서 계정 연결이 안될때 해결

컴퓨터 관리에 들어가서

서비스 및 응용프로그램 -> 서비스

두개가 꺼져있으면 네트워크 오류로 17002가 뜨게 된다 두 서비스를 실행으로 바꾸면 문제 해결

--

--

No responses yet