JDBC的基礎接口及其用法
JDBC基礎
所謂JDBC即是:Java DataBase Connectivity,java與數據庫的連接。是一些用來執行SQL語句的Java API。
我們進行JDBC的編程,主要常用的幾個概念:Connection 、 Statement 、PreparedStatement 、 ResultSet。
一、Connection對象
Connection對象,代表與數據源進行的唯一會話。如果是客戶端/服務器數據庫系統,該對象可以等價于到服務器的實際網絡連接。簡單點介紹,在java編程中即是java程序與數據庫之間的一個數據通道,所有對數據庫中數據的操作,均需要通過這個通道進行,因此,該對象也是進行與數據庫對接的首要創建對象,該對象提供了很多方法,用來實現與程序與數據庫的數據交互,常見的有
××××.getConnection(url, user, password) //建立數據庫的連接通道(會話)
.Closed()//關閉連接 .isClosed() //通道是否關閉
createStatement() //創建statement對象 prepareStatement(sql); //創建prepareStatement對象,sql為未填裝語句
二、Statement對象
Statement對象,是 Java 執行數據庫操作的一個重要接口,用于在已經建立數據庫連接的基礎上,向數據庫發送要執行的SQL語句。Statement對象,用于執行不帶參數的簡單SQL語句。主要作用即是向數據庫發送一些簡單的SQL語句,使得java通過statement即可對數據庫中的數據進行增刪改查,該對象一般通過Connection對象的createStatement()方法來創建。它常用的方法有:
executeQuery() // 執行SQL語句,并返回一個ResultSet的實例
三、PreparedStatement對象
PreparedStatement繼承自Statement,也是一個向數據庫發送SQL語句的接口,相比于Statement,它具有更高頻率的使用,向它傳入的SQL語句可以使用占位符,是預編譯的,SQL 語句被預編譯并存儲在 PreparedStatement 對象中。然后可以使用此對象多次高效地執行該語句。所謂占位符的SQL語句即是一種輸入了鍵但是對應的值用 ?來代替的SQL語句,例如: select password from grils where id = ? ,這里的 ? 未確定的值,可以根基后續的set***方法來填裝完成,使他成為完整的SQL語句
該對象常用的方法有:
set××××(int,string)//填裝SQL語句中占位符的參數
executeQuery() //執行帶填裝完成的SQl語句,返回一個ResultSet實例
四、ResultSet對象
ResultSet,數據庫結果集的數據表,通過執行查詢數據庫的語句生成,以statement / preparedstatement的execteQuery方法返回,該對象返回了數據庫執行SQL語句后的結果集,通過其特有的方法,可以在java中提取出這些數據集。常用方法:
next();//用于遍歷循環結果集
getString()//返回String類型的值
getInt()//返回Int類型的值
等等
具體實現JDBC連接代碼
1 public class JdbcUtil { 2 private static String url="jdbc:mysql://127.0.0.1:3306/user"; 3 private static String user="root"; 4 private static String password="root"; 5 private static Connection con = null; 6 static{ 7 try { 8 Class.forName("com.mysql.jdbc.Driver");//映射加載數據庫驅動 9 } catch (ClassNotFoundException e) { 10 // TODO Auto-generated catch block 11 e.printStackTrace(); 12 } 13 try { 14 con = DriverManager.getConnection(url, user, password);//傳入賬號密碼,建立連接 15 } catch (SQLException e) { 16 // TODO Auto-generated catch block 17 e.printStackTrace(); 18 } 19 } 20 public static Connection getConnection() 21 { 22 try { 23 con = (con==null||con.isClosed())?DriverManager.getConnection(url, user, password):con; 24 //判斷連接是否建立 25 } catch (SQLException e) { 26 // TODO Auto-generated catch block 27 e.printStackTrace(); 28 } 29 return con;//返回通道 30 } 31 32 }
1 public class Opearte { 2 3 public boolean getuser(String username,String password) throws SQLException 4 { 5 String sql = "select password from user where id=?"; 6 Connection con = JdbcUtil.getConnection(); 7 PreparedStatement stat = con.prepareStatement(sql);//預處理sql語句生成可執行數據 8 ResultSet rs = null; 9 stat.setString(1, username); 10 rs = stat.executeQuery(); 11 while(rs.next()) 12 { 13 if( password.equals(rs.getString("password"))) 14 { 15 return true; 16 } 17 } 18 return false; 19 } 20 }

浙公網安備 33010602011771號