JDBC 연결 데이터베이스:
1. JDBC 드라이버 로드
2. JDBC 연결 URL 제공
3. 명령문 생성
5, SQL 문 실행
6. 결과 처리
7. JDBC 개체 닫기
//加载数据库驱动总共有三种方式: try{ //① Class.forName("com.mysql.jdbc.Driver") ; //② com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver(); //③ new com.mysql.jdbc.driver(); }catch(ClassNotFoundException e){ System.out.println("找不到驱动程序类 ,加载驱动失败!"); e.printStackTrace() ; }
String url = "jdbc:mysql://localhost:3306/samp_db?" + "user=root&password=mysql&useUnicode=true&characterEncoding=UTF8";
1. 정적 SQL 문을 실행합니다. 일반적으로 State 인스턴스를 통해 구현됩니다.
2. 동적 SQL문을 실행합니다. 일반적으로 ReadyStatement 인스턴스를 통해 구현됩니다.
3. 데이터베이스 저장 프로시저를 실행합니다. 일반적으로 CallableStatement 인스턴스를 통해 구현됩니다.
String url = "jdbc:mysql://localhost:3306/test" ; String username = "root" ; String password = "root" ; try{ Connection con = DriverManager.getConnection(url , username , password ) ; }catch(SQLException se){ System.out.println("数据库连接失败!"); se.printStackTrace() ; }
Statement 인터페이스는 SQL 문 실행을 위한 세 가지 메서드인 ExecuteQuery, ExecuteUpdate 및 Execution을 제공합니다.
1. 데이터베이스를 쿼리하고 결과 집합(ResultSet) 개체를 반환하는 SQL 문입니다.
2. int excuteUpdate(String sqlString): INSERT, UPDATE, DELETE 문과 CREATE TABLE, DROP TABLE 등과 같은 SQL DDL 문을 실행하는 데 사용됩니다.
execute(sqlString): 실행하는 데 사용됩니다. 다중 반환 결과 세트, 다중 업데이트 횟수 또는 둘의 조합이 포함된 명령문입니다.
Statement stmt = con.createStatement() ; PreparedStatement pstmt = con.prepareStatement(sql) ; CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
6. 결과 처리
두 가지 상황:
1. 업데이트를 실행하면 이 작업의 영향을 받은 레코드 수가 반환됩니다.
2. 쿼리를 실행하여 반환되는 결과는 ResultSet 개체입니다.
• ResultSet에는 SQL 문의 조건과 일치하는 모든 행이 포함되어 있으며 일련의 get 메소드를 통해 이러한 행의 데이터에 대한 액세스를 제공합니다.
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ; int rows = stmt.executeUpdate("INSERT INTO ...") ; boolean flag = stmt.execute(String sql) ;
작업이 완료된 후 사용된 모든 JDBC 개체를 닫아야 합니다. JDBC 리소스의 경우 닫기 순서는 선언 순서와 반대입니다.
1. 레코드 세트 닫기
2. 문 닫기
3. 연결 개체 닫기
while(rs.next()){ String name = rs.getString("name") ; String pass = rs.getString(1) ; // 此方法比较高效 } (列是从左到右编号的,并且从列1开始)
if(rs != null){ // 关闭记录集 try{ rs.close() ; }catch(SQLException e){ e.printStackTrace() ; } } if(stmt != null){ // 关闭声明 try{ stmt.close() ; }catch(SQLException e){ e.printStackTrace() ; } } if(conn != null){ // 关闭连接对象 try{ conn.close() ; }catch(SQLException e){ e.printStackTrace() ; } }