JDBC 프로 그래 밍-Connection 및 흔 한 질문 가 져 오기

5835 단어 자바jdbc
JDBC 로 Oracle 연결 하기
실현 방향:
Oacle.properties 라 는 파일 을 사용 합 니 다.Oracle 의 URL,User,Password,driver 류 가 적 혀 있 습 니 다.ClassLoader 의 입력 흐름 을 통 해 입력 흐름 에 프로그램 에 입력 된 Oracle 연결 초기 화 매개 변 수 를 입력 하고 입력 흐름 은 Properties 에서 load 에 불 러 옵 니 다.getProperty(String key)를 통 해 파일 정 보 를 얻 습 니 다.
JdbcUtils.java
package exer.jdbcutils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * @author mmengyiyu
 * @date 2019/11/15 16:47
 */
public class JdbcUtils {
    private static String url;
    private static String user;
    private static String pwd;
    private static String driverClass;
    //   mysql.properties  
    static {
        InputStream resource = JdbcUtils.class.getClassLoader().getResourceAsStream("exer\jdbcutils\oracle.properties");
        Properties prop = new Properties();
        try {
            prop.load(resource);
            url = prop.getProperty("jdbc.url");
            user = prop.getProperty("jdbc.user");
            pwd = prop.getProperty("jdbc.pwd");
            driverClass = prop.getProperty("jdbc.driverClass");
            Class.forName(driverClass);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     *          JDBC  
     * @author mmengyiyu
     * @date 2019-11-15 19:27
     * @param conn         
    */
    public static void release(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     *          JDBC  
     * @author mmengyiyu
     * @date 2019-11-15 19:27
     * @param ps     SQL  
     */
    public static void release(PreparedStatement ps) {
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     *       JDBC  
     * @author mmengyiyu
     * @date 2019-11-15 19:27
     * @param st     SQL  
     */
    public static void release(Statement st) {
        if (st != null) {
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     *        JDBC  
     * @author mmengyiyu
     * @date 2019-11-15 19:27
     * @param rs     SQL   
     */
    public static void release(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     *   MySQL     
     * @author mmengyiyu
     * @date 2019-11-15 19:28
     * @return      
    */
    public static Connection getConnection() {
        Connection conn = null;
        try {
            conn = DriverManager.getConnection(url,user,pwd);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
}

oracle.properties
# oracle 11
jdbc.url = jdbc:oracle:thin:@//127.0.0.1:1521/orcl
jdbc.user = scott
jdbc.pwd = 123456
jdbc.driverClass = oracle.jdbc.driver.OracleDriver

일반적인 질문-자바 문자열 을 Oracle Date 형식 으로 어떻게 변환 합 니까?
이 문 제 를 해결 하 는 사고방식 은 다음 과 같다.
Oracle Date 는 자바 String 형식 과 다 릅 니 다.자바 가 Oracle Date 데 이 터 를 쓰 려 면 문자열 을 자바.sql.Date 로 바 꿔 야 합 니 다.문자열 을 java.sql.Date 로 변환 하려 면 다음 과 같은 몇 단 계 를 거 쳐 야 합 니 다.
  • JDK 1.8 에서 제공 하 는 java.time.LocalDate 또는 java.time.LocalTime 또는 java.time.LocalDateTime 형식 으로 문자열 을 변환 합 니 다.
  • java.sql.Date.valueOf()를 사용 하여 java.time.LocalDate 또는 java.time.LocalTime 또는 java.time.LocalDateTime 형식 을 java.sql.Date
  • Oracle Date 유형
    Date 값 의 형식 은NLS_DATE_FORMAT이 며,구체 적 인 형식 은 다음 과 같 습 니 다.
    DD-MON-RR

    여기 서 자바.sql.date 와 자바.time.LocalDate 를 사용 합 니 다.소스 부분 은 다음 과 같 습 니 다.
    import java.sql.Date;
    import java.time.LocalDate;
    ...
    System.out.println("  (    :\"yyyy-MM-dd\"):");
                    String birthday = sc.next();
                    String[] split = birthday.split("-");
                    Date date = Date.valueOf(LocalDate.of(Integer.parseInt(split[0]),Integer.parseInt(split[1]),Integer.parseInt(split[2])));

    이렇게 하면 화면 에 입력 한 문자열 을 java.sql.Date 로 변환 할 수 있 습 니 다.
    흔 한 질문-JDBC 를 사용 하여 Oracle DML 을 조작 한 후 반드시 트 랜 잭 션 제출 방법 을 호출 해 야 합 니 다.
    Oracle 데이터베이스 트 랜 잭 션 이 기본적으로 자동 으로 제출 되 지 않 기 때 문 입 니 다.그러면 프로 그래 밍 에서 데이터베이스(DML)를 추가 삭제 하고 수정 하 는 것 과 관련 되면 반드시 conn.comit()를 해 야 합 니 다.그렇지 않 으 면 데이터 베 이 스 를 지속 할 수 없습니다!
    가장 직관 적 인 느낌 은 분명히 나의 insert/update/delete 가 표 의 기록 을 가지 고 있 는데 왜 데이터베이스 소프트웨어 조회 표를 사용 할 때 표 에 아무런 변화 가 없 습 니까?
    물론 한 번 의 업무 에서 DML 작업 이 실패 하면 catch 블록 에 들 어가 면 스크롤 백 이 필요 합 니 다.
    부분 소스 코드 는 다음 과 같 습 니 다.
    Connection conn = null;
    try {
        ...
        conn = JdbcUtils.getConnection();
        ...(           )
        ...
        //          DML  ,       ,  Oracle         。
        conn.commit();
        conn.close();
    } catch (SQLException e) {
        //      ,   try     ,    ACID,       。
        try {
            conn.rollback();
         } catch (SQLException ex) {
            ex.printStackTrace();
        }
            e.printStackTrace();
        } finally {
            JdbcUtils.release(conn);
        }

    Jdbc 에서 어떤 프로 그래 밍 내용 을 파악 해 야 합 니까?
  • 데이터베이스 연결 의 로드 와 Jdbc 자원 과 관련 된 방출 작업 을 포함 하 는 Jdbc 도구 클래스 를 작성 합 니 다.
  • 시 계 를 어떻게 맞 추 는 지 CRUD
  • 표 에 표 시 를 추가 합 니 다.
  • 홈 키 가 있 는 필드 의 여러 필드 값 에 따라 여러 기록 을 삭제 하 는 방법 입 니 다.
  • DBUtils 를 사용 하 는 것 을 배 웁 니 다.
  • 예 를 들 어 DBUtils 의 Query Runner.query()와 Query Runner.update()
  • 좋은 웹페이지 즐겨찾기