티스토리 뷰
DB연동 없이 JSP 홈페이지 만들기(회원가입, 회원목록) 링크: rla5378.tistory.com/17 DB연동 없이 JSP 홈페이지 만들기(로그인 로그아웃) 링크: rla5378.tistory.com/18 DB연동 없이JSP 홈페이지 회원 수정, 회원 삭제 구현 링크: rla5378.tistory.com/19 홈페이지와 연결할 DB테이블 만들기 링크: rla5378.tistory.com/21 |
이번 글은 위의 페이지의 글들에 사용되었던 업데이트, 삭제, 찾기, 모두 찾기, 삽입 기능들을 오라클 DB와 연동하여 자바파일에 바꾸어 적용하는 글입니다.
먼저 조회 기능을 만들면서 설명을 함께 해 나가겠습니다.
1.저장된 데이터를 조회하기-Select.java
public class select {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("아이디: ");
String id = in.next();
// 1. 드라이버 로드
}
(1)드라이버를 로드
아이디를 입력받으면 맨 처음 할 일은 드라이버를 로드하는 것입니다.
하는 이유는 우리가 데이터베이스에 접근하기 위해서 필요한 파일들을 처리해주기 위한 드라이버이기 때문입니다.
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
Class.forName 이라는 것은 로드할 클래스의 이름을 묻는 것이고 그것에 저는 oracle.jdbc.driver.OracleDriver이라 답해줍니다.
// 2. DB 연결 개체 생성
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "jsp";
String password = "jsp";
Connection con;
PreparedStatement ps;
ResultSet rs;
// 3. DB에서 전달한 쿼리문 작성
String sql="select * from member where id =?";
try {
con = DriverManager.getConnection(url, user, password);
ps = con.prepareStatement(sql);
ps.setString(1, id);
//4.작성된 쿼리문 데이터베이스로 전달
rs = ps.executeQuery();
rs.next();
System.out.print(rs.getInt(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getString(3)+"\t");
System.out.print(rs.getString(4)+"\t");
System.out.println(rs.getString(5));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(2)DB 연결 객체 생성
Connection은 java.sql에 있는 클래스를 import해야 사용할 수 있습니다.
지금 현재 우리가 드라이버 실행을 시켰으니 거기에 연결을 하기 위해서 connection을 사용합니다.
지금은 초기화를 시켜주지 않고 참조 변수 명 만 지정을 시켜둡니다.
PreparedStatement는 우리가 어떤 쿼리문을 전달하겠다는 행동을 취할 때 쿼리문을 전달해주는 클래스입니다.(이것 역시 import를 시켜줘야합니다)
con.prepareStatement(sql);
연결객체에서 sql이라는 변수에다가 쿼리문을 작성해서 넘겨줄겁니다.
현재 이 작업은 DB에 즉각적으로 데이터를 전달하는 작업이 아닙니다.
현재의 단계는 db에 전달할 쿼리문을 작성하는 단계입니다.
(3) DB에서 전달할 쿼리문 작성
String sql="select * from member where id =?";
ps = con.prepareStatement(sql);
↑이 코드들이 db에 쿼리문을 전달하기 위해 두는 코드입니다.
con = DriverManager.getConnection(url, user, password); <이것은 드라이버 매니저를 통해서 연결해달라는 것입니다.
저는 DB를 연결할때 url, user, password를 사용했습니다.
url, user, password를 사용하기 위해서는 con 구문 위에 변수를 만들어주어 값을 넣어 연결해주기로 했습니다.
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "jsp";
String password = "jsp";
이때 url 경로는 실제 데이터베이스 경로를 알려주는것으로 지금은 DB를 자기 자신의 컴퓨터로 들어가 찾는 것이므로 localhost라고 적었지만 다른 컴퓨터의 DB에 접속하려면 해당 컴퓨터의 IP주소를 넣어주면 됩니다.
String sql="select * from member where id =?";
id = ? 이 아닌 id를 넣어주고 싶으면 id = " +id + " "\"" 이라고 적어주어야합니다.
이러면 코드가 길어지고 보기에도 힘드니 ?로 적어주고 ?를 가리키는 구문은 밑에 적어줍니다.
ps.setString(1, id);
1번째 자리에 id를 넣어줘라 라는 구문입니다.
여기서 첫번째라고 하믄 ? 의 갯수를 말합니다. (해당 코드에서는 ?가 1개밖에 없으니 1은 id를 넣어줍니다)
String sql="select * from member where id =?, pw = ?, name = ?";
ps.setString(1, id);
ps.setString(2, pw);
ps.setString(3, name);
만약 ?가 한개가 아닐시에는 ↑이렇게 작성해줍니다.
(4)작성된 쿼리문 데이터베이스로 전달
rs = ps.executeQuery();
rs.next();
System.out.print(rs.getInt(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getString(3)+"\t");
System.out.print(rs.getString(4)+"\t");
System.out.println(rs.getString(5));
executeQuery()는 ResultSet이라고 하는 자료형으로 반환합니다.
rs라는 객체를 만들어 ps로 실행한 쿼리문을 executeQuery()해서 DB로 전달해주었습니다.
쿼리문의 결과는 ResultSet rs에 저장합니다.
정확히는 executeQuery()를 해서 응답받은 결과를 rs가 찾아가는 것입니다.
getInt(getString)는 컬럼의 index도 지원을 하기 때문에 rs.getInt(1)는 num을 가리키는 의미가 됩니다
이 페이지를 구동시킬때는 를 사용하여 오타가 없는지, 에러가 없는지 확인해볼 수 있습니다.
[코드 전문]
package jdbcBasic;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
import com.sun.jndi.url.corbaname.corbanameURLContextFactory;
public class select {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("아이디: ");
String id = in.next();
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "jsp";
String password = "jsp";
Connection con;
PreparedStatement ps;
ResultSet rs;
String sql="select * from member where id =?";
try {
con = DriverManager.getConnection(url, user, password);
ps = con.prepareStatement(sql);
ps.setString(1, id);
rs = ps.executeQuery();
rs.next();
System.out.print(rs.getInt(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getString(3)+"\t");
System.out.print(rs.getString(4)+"\t");
System.out.println(rs.getString(5));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
'오라클' 카테고리의 다른 글
홈페이지와 연결할 DB 테이블 만들기 (0) | 2021.05.06 |
---|---|
오라클과 톰켓을 연동하기 (0) | 2021.04.27 |
오라클 sequence사용해보기 (0) | 2021.04.27 |
오라클_commit, rollback (0) | 2021.04.27 |
오라클의 기본 명령어_insert, select, update, delete (0) | 2021.04.27 |
- Total
- Today
- Yesterday
- Redirect
- 정처기
- NAV
- 정처산기
- 독학
- 자격증
- request
- application
- Margin
- dl
- jsp
- 합격
- div
- Expression
- this.
- Declaration
- 실기
- RequestDispatcher
- pageContext
- id
- forward
- span
- padding
- scriptlet
- 정보산업처리기사
- link href
- getParameter
- CLASS
- session
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |