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='" + name + "'"; 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!