> Java > java지도 시간 > JAVA 개발에 있어 JDBC의 운용에 대한 심층적인 설명

JAVA 개발에 있어 JDBC의 운용에 대한 심층적인 설명

无忌哥哥
풀어 주다: 2018-07-20 10:42:36
원래의
1326명이 탐색했습니다.

Sun 회사는 단지 인터페이스일 뿐이며 구현 클래스를 제공하지 않습니다. 즉, 드라이버

jdbc 작업 프로세스를 제공합니다. 1. Jar 패키지 가져오기; 기록된 수업(예: 학생 수업) 3. 연결 획득 4. SQL 실행.

// sql的执行 
// insert
private static int insert(Student student) {
    Connection conn = getConn();
    int i = 0;
    String sql = "insert into students (Name,Sex,Age) values(?,?,?)";
    PreparedStatement pstmt;
    try {
        pstmt = (PreparedStatement) conn.prepareStatement(sql);
        pstmt.setString(1, student.getName());
        pstmt.setString(2, student.getSex());
        pstmt.setString(3, student.getAge());
        i = pstmt.executeUpdate();
        pstmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return i;
}

// update
private static int update(Student student) {
    Connection conn = getConn();
    int i = 0;
    String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'";
    PreparedStatement pstmt;
    try {
        pstmt = (PreparedStatement) conn.prepareStatement(sql);
        i = pstmt.executeUpdate();
        System.out.println("resutl: " + i);
        pstmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return i;
}
// select xx from tableName
private static Integer getAll() {
    Connection conn = getConn();
    String sql = "select * from students";
    PreparedStatement pstmt;
    try {
        pstmt = (PreparedStatement)conn.prepareStatement(sql);
        ResultSet rs = pstmt.executeQuery();
        int col = rs.getMetaData().getColumnCount();
        System.out.println("============================");
        while (rs.next()) {
            for (int i = 1; i <= col; i++) {
                System.out.print(rs.getString(i) + "\t");
                if ((i == 2) && (rs.getString(i).length() < 8)) {
                    System.out.print("\t");
                }
             }
            System.out.println("");
        }
            System.out.println("============================");
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;
}

// delete
private static int delete(String name) {
    Connection conn = getConn();
    int i = 0;
    String sql = "delete from students where Name=&#39;" + name + "&#39;";
    PreparedStatement pstmt;
    try {
        pstmt = (PreparedStatement) conn.prepareStatement(sql);
        i = pstmt.executeUpdate();
        System.out.println("resutl: " + i);
        pstmt.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return i;
}
로그인 후 복사

테스트:

// 测试
public static void main(String args[]) {
    JDBCOperation.getAll();
    JDBCOperation.insert(new Student("Achilles", "Male", "14"));
    JDBCOperation.getAll();
    JDBCOperation.update(new Student("Bean", "", "7"));
    JDBCOperation.delete("Achilles");
    JDBCOperation.getAll();
}
로그인 후 복사

출력 결과:

============================
1    Ender        male    8    
2    Bean        male    6    
3    Petra        fema    9    
4    Peter        male    9    
5    _Graff        male    40    
6    GOD        fema    255    
============================
============================
1    Ender        male    8    
2    Bean        male    6    
3    Petra        fema    9    
4    Peter        male    9    
5    _Graff        male    40    
6    GOD        fema    255    
7    Achilles    Male    14    
============================
resutl: 1
resutl: 1
============================
1    Ender        male    8    
2    Bean        male    7    
3    Petra        fema    9    
4    Peter        male    9    
5    _Graff        male    40    
6    GOD        fema    255    
============================
로그인 후 복사

코드 분석:

위의 데이터베이스 추가, 삭제, 수정 및 확인 과정에서 공통된 부분, 즉 일반적인 프로세스를 찾을 수 있습니다.

(1) Connection 객체, SQL 쿼리 명령 문자열을 생성합니다.

  (2) SQL 쿼리 명령을 Connection 객체에 전달하고 preparedStatement 객체를 얻습니다.

  (3) preparedStatement 객체에서 ExecuteUpdate() 또는 ExecuteQurey()를 실행합니다. 결과를 얻으려면

   (4) ReadyStatement 개체와 Connection 개체를 차례로 닫습니다.

 JDBC를 사용할 때 가장 많이 다루는 두 가지 클래스는 Connection과 preparedStatement이고, select에는 ResultSet 클래스가 있다는 것을 알 수 있습니다.

생각하는 질문

1. 모든 SQL 작업은 연결을 설정하고 닫아야 하는데, 이로 인해 필연적으로 많은 리소스 오버헤드가 소모됩니다.

분석: 연결 풀을 사용하면 매번 연결을 설정하고 닫을 필요 없이 연결을 균일하게 유지할 수 있습니다. 실제로 이는 JDBC를 캡슐화하는 많은 도구에서 사용됩니다.

2. Java 코드로 들어오는 데이터 형식이 데이터베이스 정의와 다른 경우 어떻게 해야 합니까? 예를 들어 Java String 객체를 데이터베이스의tinyint 속성에 할당합니다.

분석: SQL 문을 실행할 때 데이터베이스는 변환을 시도합니다. 내 실험에 따르면 순수 문자가 포함된 String 객체를 사용하여 Tinyint의 age 속성을 전달하면 0으로 변환됩니다. 특정 변환 규칙은 데이터베이스와 관련되어야 합니다.

위 내용은 JAVA 개발에 있어 JDBC의 운용에 대한 심층적인 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿