728x90
1. 기본개념
1-1. db 동작 원리
오라클이 설치 됐을 때 우리 pc에 리스너라는 것이 작동하는데 이때 포트가 하나 열린다 그 포트가 1521번 포트이다
이때 어디에 접속할건가 (localhost) 포트번호가 몇번인가(1521) sid는 무엇인가(xe)라는 것을 볼 수 있다. 이걸 통해서 결과를 보내고 얻어오고 할 수 있는 tool이 sql 디벨로퍼이다
이 개념 그대로 자바에 통신을 할 수있다. 하지만 두개는 다른 프로그램이기 때문에 오라클에서 제공하고 있는 드라이버가 필요하다
1-1-1. dirver??
오라클에서는 자신의 데이터베이스 시스템을 사용할 수 있도록 자바 코드로 미리 오라클을 사용할 수 있는 시스템을 만들어놨다 즉 드라이버의 역할은 서로 다른 시스템간의 인터페이스 역할이라고 볼 수 있다.
우리가 삼성 노트북을 사용한다고 가정할때 hp사의 프린터기를 사면 드라이버를 설치해야한다. 서로 다른 제조사 제품을 연결해주는 인터페이스를 설치하는 개념이 그게 바로 ojdbc이다
2. connection
2-1. 필요한 정보
String user = "유저이름";
String password = "비밀번호";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
오라클 db에 접속할대 아이디와 비밀번호를 적으면 된다 아래 url은 오라클에서 정해준 url 이다
다음 드라이버 클래스를 로딩한다
Class.forName("oracle.jdbc.OracleDriver");
다운로드 받은 ojdbc에 들어있는 파일이다
그리고 드라이버에 커넥션을 한다
Connection con = DriverManager.getConnection(url,user,password);
그래서 try catch 까지 한 최종 코드가
String user = "scott";
String password = "1234";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
try{
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch(SQLExcpetion e) {
e.printStackTrace();
}
만약 커넥션이 되지 않는다면 SQLException이 발생한다
3. select 쿼리 사용
3-1. StringBuffer??
문자열을 가변적으로 바꿀 수 있는 참조타입이다
append 혹은 연산자로 기존의 문자열에 추가를 자유롭게 할 수 있다.
Connection conn = null;
Statement stmt = null;
REsultSEt rs = null;
// 스트링 버퍼 사용
StringBuffer sql = new StringBuffer();
// 문자열 추가, 쿼리문 사용
sql.append("select * from \"INFO\"");
// 드라이버와 커넥션
conn = DriverManager.getConnection(url, user, password);
// statement 객체 생성
stmt = conn.createStatement();
// statement 객체를 사용하여 위에 만들었던 sql구문 전송
rs = stmt.excuteQuery(sql.toString());
// resultset(여기선 table 요소들)을 순회해서 있으면 true, 없으면 false 반환
// 컬럼 명을 써도 괜찮고 컬럼 위치(숫자)를 써도 된다 (자료형만 잘 쓰자)
while(rs.next()){
System.out.println(rs.getLong(1)); // 데이터 꺼내기
System.out.println(rs.getString("NAME")); // NAME컬럼에 있는 값 꺼내기
System.out.println(rs.getDate(3)); // 세번째 컬에 있는 값을 꺼내기
System.out.println(rs.getString("PHONE")); // ADRESS컬럼에 있는 값 꺼내기
System.out.println();
}
3. insert(update, delete 동일) 쿼리 사용
Connection conn = null;
PreparedStatement pstmt = null;
String user = "scott";
String password = "tiger";
String url = "jdbc:oracle:thin:@localhost:1521:xe:;
try{
Class.forName("oracle.jdbc.OracleDriver");
StringBuffer sql = new StringBuffer();
sql.append("insert into \"info"\(\"num\", \"name\", \"birth\". \"phone\")");
sql.append("values (\"info_seq\", nextval, ?, sysdate, ?)");
String name = in.nextLine();
String phone = in.nextLine();
conn = DriverManager.getConnection(url, user, password);
pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1, name);
pstmt.setString(3, phone);
int result = pstmt.executeUpdate(); // insert, update, delete
} catch() {
} catch() {
}
반응형
'Java 개념' 카테고리의 다른 글
자바 둘러보기 (0) | 2024.02.16 |
---|---|
JavaBean과 액션태그 (0) | 2023.09.05 |
Stack과 Queue (0) | 2023.08.23 |
Collection - Set,Map (0) | 2023.08.23 |
Collection - LinkedList (0) | 2023.08.22 |