JAVA + DB
DB와 JAVA 연동 및 Query실행
by pms93
2022. 8. 4.
package jdbc_concept1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class ConnectionTest {
public static void main(String[] args) {
// DB Connection
// 1. Driver 실행
try {
// OracleDrive 대소문자 정확히 입력해야 한다.
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("드라이버 클래스를 찾지 못함.");
e.printStackTrace();
// 오류 발생시 경우의 수
// - jar file이 준비가 안되어있다.
// - 경로 입력이 잘못 되어있다.
}
// 2. DB연결
// .getConnection(DB 위치, user ID, user PW)
String user = "oracle";
String password = "oracle";
// localhost : DB Server('오라클 프로그램이 설치된 컴퓨터')의 IP주소(컴퓨터 주소)
// : 127.0.0.1(this(내 컴퓨터)와 같은 의미(LoopBack))
// 1521 : DB port number
// DNS가 없으면 컴퓨터의 IPv4 주소를 localhost대신 명시해야 한다.
// xe : DB의 버전에 따라 달라질 수 있다.
String url = "jdbc:oracle:thin:@localhost:1521:xe";
Connection con = null;
// connection : DB와 Client를 이어주는 연결고리
try {
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
// 3. DB로 Query 전달
Scanner sc = new Scanner(System.in);
System.out.print("아이디 : ");
String id = sc.next();
// String sql = "SELECT * FROM test WHERE id = '" + id + "'";
// String sql = "SELECT * FROM test WHERE id = ? and pw = ? and name = ?";
String sql = "SELECT * FROM test WHERE id = ?";
PreparedStatement ps = null;
ResultSet rs = null;
try {
// .prepareStatement(Query)
// - 쿼리문 내에 명시해야 할 데이터를 ?로 명시한 후 쿼리의 행동을 대신해주는 객체(PrepareStatement)로 넘긴다.
ps = con.prepareStatement(sql);
// .set자료형(number, 데이터)
// - number번째에 있는 ?에 데이터를 넣어준다.
// - 배열과 다르게 1번부터 시작한다.
ps.setString(1, id);
// ps.setString(2, password);
// ps.setString(3, "관리자");
// SELECT
// .executeQuery
// - 해당하는 레코드가 없을시 null을 반환한다.
// - DB가 반환해주는 데이터가 .executeQuery를 통해 ResultSet에 담긴다.
rs = ps.executeQuery();
if (rs.next()) { // rs.next() -> next 메서드를 통해 rs에 있는 데이터에 접근이 가능하다. true, false를 반환한다.
System.out.println("번호 : " + rs.getInt("num"));
System.out.println("아이디 : " + rs.getString("id"));
System.out.println("비밀번호 : " + rs.getString("pw"));
System.out.println("번호 : " + rs.getString("name"));
} else {
System.out.println("검색한 아이디로 정보를 확인할 수 없습니다.");
}
// INSERT, UPDATE, DELETE
// .executeUpdate
// - 반영된 레코드의 건수를 반환해준다
// - 반환값을 통해 DB에 Query문이 정상 작동 했는지 알 수 있다.
// - CREATE / DROP 관련 구문에서는 -1을 반환한다
int row = ps.executeUpdate();
System.out.println("반영된 레코드 건수 : " + row);
} catch (SQLException e) {
e.printStackTrace();
}
}
}