국비 25일차 JDBC(DB접근, Select, insert)
2021. 2. 8. 23:11
2021.02.08 국비 교육 25일차
JDBC
- JDBC는 자바언어에서 데이터베이스에 접근할 수 있는 프로그래밍 API
- JDBC는 대부분이 인터페이스로 되어있다.
Select
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Statement_select {
public static void main(String[] args) {
//1. 4가지 정보
String driver ="oracle.jdbc.driver.OracleDriver"; //jdbc드라이버 클래스 경로지정 // ClassNotFoundException
String url = "jdbc:oracle:thin:@localhost:1521:xe"; // db접속url/sid //error : sqlException , java.sql.SQLRecoverableException
String userid = "scott"; //접속 스키마 // java.sql.SQLException: ORA-01017: invalid username/password; logon denied
String passwd = "tiger"; // 패스워드
//2. 드라이버 생성 => new 이용
//2. db 접속 및 sql 사용시 필요 객체 선언
Connection con = null; // db 접속 객체 - url, id, passwd 필요
// PreparedStatement pstmt = null; //sql 실행 객체 con을 통해 생성
ResultSet rs = null; //sql 실행 객체 con을 통해 생성
Statement stmt = null; //실행된 sql문의 select 결과를 ResultSet 객체에 담아서 옴
try {
Class.forName(driver); // 2.드라이버 로딩(생성)
System.out.println("driver 로딩 성공");
//3. 오라클 연결
con = DriverManager.getConnection(url, userid, passwd);
System.out.println("Connection 성공 : " + con);
//getConnection(주소, 스키마아이디, 패스워드)
//4. sql 작성 : 문자열로 작성, 디벨로퍼 사용 sql사용 ; 없음
String sql = "select deptno x,dname, loc from dept";
//5. SQL 실행 ==> Statement,PreparedStatemnet, CallableStatement(PL / SQL)
stmt = con.createStatement();
System.out.println(" stmt생성 성공 " + stmt);
//6. 실행해서 결과받기
rs= stmt.executeQuery(sql); // rs = select 결과를 담은 객체
System.out.println("rs 결과 얻기 : " + rs);
while(rs.next()) { // 결과 출력하기 - 하나의 레코드 접근
int deptno = rs.getInt("x"); //하나의 레코드에서 컬럼 값 꺼내기 - 별칭사용, 타입지정
String dname = rs.getString("dname"); //하나의 레코드에서 컬럼 값 꺼내기 - 컬럼 이름, 타입지정
String loc = rs.getString("loc");
System.out.println(deptno + " " + dname + " " + loc); // 하나의 레코드 결과 출력
} // select 결과 순회 끝
} catch(ClassNotFoundException e) { //Class.forName()
e.printStackTrace();
} catch(SQLException e) { //getConnection(), executeQuery()
e.printStackTrace();
}finally {
try {
//7. 자원 반납 반대순서로 실행
if(rs != null)rs.close();
if(stmt != null)stmt.close();
if(con != null)con.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
} //end main
}
insert
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Statement_Insert_2 {
public static void main(String[] args) {
String driver ="oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String userid = "scott";
String passwd = "tiger";
Connection con = null;
ResultSet rs = null;
Statement stmt = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, userid, passwd);
stmt = con.createStatement();
int deptno = 99;
String dname = "제조";
String loc = "경기";
String sql = "insert into dept(deptno, dname, loc) values(" + deptno + ", '" + dname + "', '" + loc +"')";
int result = stmt.executeUpdate(sql);
System.out.println("삽입 갯수 : " + result);
String sql2 = "select deptno, dname, loc from dept";
rs = stmt.executeQuery(sql2);
while(rs.next()) {
System.out.println(rs.getInt(1) + " : " + rs.getString(2) + " : " + rs.getString(3));
}
} catch (SQLException e) {
e.printStackTrace();
} catch(ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if(rs != null)rs.close();
if(stmt !=null)stmt.close();
if(con != null)con.close();
} catch (SQLException e2) {
e2.printStackTrace();
}
}
}
}
'ETC > 국비교육' 카테고리의 다른 글
국비 27~32일차 mybatis 정리 (0) | 2021.02.23 |
---|---|
국비 26일차 JDBC(delete, update, 클래스 연동) (0) | 2021.02.10 |
국비 24일차 컬렉션 List, HashMap 익숙해지기 (0) | 2021.02.05 |
국비 23일차 JAVA 컬렉션, 제네릭, List, map (0) | 2021.02.04 |
국비 22일차 throw, 예제 (0) | 2021.02.03 |