Thứ Sáu, 30 tháng 6, 2017

[Thực tập] Buổi 4: Kết nối JDBC and Hibernate

1. Tổng quan về JDBC?
JDBC (Java Database connectivity) là một chuẩn API kết nối giữa ngôn ngữ lập trình JAVA với các hệ quản trị cơ sở dữ liệu khác nhau.Sử dụng JDBC, có thể thực hiện các tác vụ cơ bản với cơ sở dữ liệu như: tao, thêm sửa xóa cơ sở dữ liệu, thêm sửa xóa bản ghi..
2. Các bước kết nối với JDBC?
Có 5 bước để kết nối với cơ sở dữ liệu: Đây là ví dụ về kết nối dữ liệu tới cơ sở dữ liệu là Oracle.
-  Bước 1: Import các package thuộc về JDBC. 
Ví dụ: 
import java.sql.*;

- Bước 2: Load các driver của JDBC
Dùng phương thức Class.forName(String ten_lop)
Ví dụ:
  Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

 - Bước 3: Tạo kết nối tới cơ sở dữ liệu: 
Ví dụ:
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","password"); 

- Bước 4: Thực hiện một truy vấn  sử dụng
 public ResultSet executeQuery(String= sql)throws SQLException 
Ví dụ:
ResultSet rs=stmt.executeQuery("select * from emp"); 
while(rs.next()){   
         System.out.println(rs.getInt(1)+" "+rs.getString(2)); 
}  


3. Một số câu lệnh statement interface trong JDBC

  • public ResultSet executeQuery(String sql)
    • Input: 1 câu lệnh sql
    • Output: 1 đối tượng ResultSet đơn
  • public int executeUpdate(String sql)
    • Input: Có thể là 1 lệnh IINSERT, UPDATE, DELETE,...
    • Output: Không trả về gì cả.
  • public boolean execute(String sql)
    • Input: 1 lệnh sql
    • Output: Nhiều kết quả
  • public int[] executeBatch(String sql)
    • Input: Có thể là 1 câu lệnh Sql
    • Output: 
      • Một số >=0, chỉ ra số dòng đã bị tác động
      • SUCCESS_NO_INFO chỉ ra lệnh đã thành công nhưng số hầng bị tác động thì chưa biết
      • EXECUTE_FAILED chỉ ra câu lệnh bị lỗi
  • void close() 
    • Đóng đối tượng statement
4. PreparedStatement() 
Đây là một interface con của statement, giúp thực thi các câu lệnh được tham số hóa lặp đi lặp lại một cách nhanh chóng. Ví dụ:
String sql="INSERT INTO ten_bang values(?,?,?)"; 
Khi thực thi câu lệnh thì câu lệnh được biên dịch một lần, các tham số được thay thế vào dấu ? trong những lần gọi setXXX() tiếp theo. Như vậy việc thực thi sẽ nhanh hơn vì câu lệnh chỉ được biên dịch một lần cho tất cả các giá trị tham số còn lại.

Ví dụ:
PreparedStatement pstm = null;
String SQL = "insert into lytuantest(username,password) values (?,?)";
pstm = con.prepareStatement(SQL);
pstm.setString(1,"abc");
pstm.setString(2, "abc");\
pstm.executeUpdate();
con.close();

5. ResultSet Interface()

  ResultSet là kết quả trả về từ các câu lệnh cơ sở dữ liệu, Theo mặc định thì ResultSet chỉ có thể di chuyển thuận về trước, không thể chỉnh sửa. Để làm cho đối tượng có thể di chuyển về trước hoặc về sau có thể truyền một số tham số vào trong createStatement(int , int). Sau đây là một số cấu hình cần biết:
ResultSet.TYPE_FORWARD_ONLY: chỉ cho phép di chuyển về trước.
ResultSet.TYPE_SCROLL_INSENSITIVE:
ResultSet.TYPE_CROLL_SENSITIVE:


1 nhận xét:

  1. MGM Grand Casino - MapyRO
    MGM Grand Casino 여주 출장마사지 in Grand Detroit 경상남도 출장샵 is a 3-minute drive from MGM 천안 출장마사지 Grand and 1.2 km 양주 출장마사지 from the MGM Grand Casino in the 구미 출장안마 Arts District.

    Trả lờiXóa