JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為數據庫開發人員提供了一個標准的API,使數據庫開發人員能夠用純 Java API 編寫數據庫應用程序,並且可跨平台運行,並且不受數據庫供應商的限制。其優點:
package DAO; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import com.mysql.jdbc.Statement; public class JDBC { protected Connection conn; protected Statement statement; public static Connection getConnection() throws Exception { Connection connection = null; // 創建用於連接數據庫的Connection對象 try { Class.forName("com.mysql.jdbc.Driver");// 加載Mysql數據驅動 /** * 127.0.0.1指本機,若是鏈接遠程服務機器,則填寫遠程機器的ip 3306 mysql默認的端口號 test 數據庫名稱 * user 數據庫用戶名稱 password 密碼 */ connection = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/test", "user", "password");// 創建數據連接 } catch (Exception e) { e.printStackTrace(); throw new Exception("鏈接mysql數據失敗"); } return connection; // 返回所建立的數據庫連接 } /** * 向mysql插入數據記錄 返回插入數據的個數 * * @param sql * 要插入的sql語句 * @return count 插入數據的個數 * @throws Exception */ public int insert(String sql) throws Exception { conn = getConnection(); // 連接到數據庫 try { statement = (Statement) conn.createStatement(); // 創建用於執行靜態sql語句的Statement對象 int count = statement.executeUpdate(sql); // 執行插入操作的sql語句 conn.close(); // 關閉數據庫連接 return count;// 返回插入數據的個數 } catch (SQLException e) { e.printStackTrace(); throw new Exception("插入數據失敗"); } } /** * 更新符合要求的記錄 返回更新的記錄數目 * * @param sql * 更新數據的sql語句 * @return count 更新數據的個數 * @throws Exception */ public int update(String sql) throws Exception { conn = getConnection(); // 連接到數據庫 try { // 創建用於執行靜態sql語句的Statement對象, statement = (Statement) conn.createStatement(); int count = statement.executeUpdate(sql);// 執行更新操作的sql語句, conn.close(); // 關閉數據庫連接 return count; // 返回更新數據的個數 } catch (SQLException e) { e.printStackTrace(); throw new Exception("更新數據失敗"); } } /** * 查詢數據庫,返回符合要求的記錄的數據 * * @param sql 查詢數據的sql語句 * @throws Exception * @return list */ public List<Object> query(String sql) throws Exception { conn = getConnection(); // 連接到數據庫 try { statement = (Statement) conn.createStatement(); // 創建用於執行靜態sql語句的Statement對象 ResultSet rs = statement.executeQuery(sql); // 執行sql查詢語句,返回查詢數據的結果集 List<Object> list=ResultSetToList(rs); conn.close(); // 關閉數據庫連接 return list; } catch (SQLException e) { e.printStackTrace(); throw new Exception("查詢數據失敗"); } } /* 刪除符合要求的記錄,輸出情況*/ /** * * @param sql 刪除數據的sql語句 * @return count 返回刪除數據的數量 * @throws Exception */ public int delete(String sql) throws Exception { conn = getConnection(); //連接到數據庫 try { statement = (Statement) conn.createStatement(); //創建用於執行靜態sql語句的Statement對象 int count = statement.executeUpdate(sql);// 執行sql刪除語句 conn.close(); //關閉數據庫連接 return count;//返回刪除數據的數量 } catch (SQLException e) { e.printStackTrace(); throw new Exception("刪除數據失敗"); } } /** * 分頁查找 * @param sql 要查找的sql語句 * @param page 頁數 * @param count 數據條數 * @return List<Object> * @throws Exception */ public List<Object> findByPage(String sql, int page,int count) throws Exception { conn = getConnection(); //連接到數據庫 PreparedStatement pre = conn.prepareStatement(sql); pre.setMaxRows(count); ResultSet rs = pre.executeQuery(); if(page<1){ rs.absolute(0); }else{ page=page*count-1; rs.absolute(page); } List<Object> list=ResultSetToList(rs); return list; } /** * ResultSet 轉換成List */ public List<Object> ResultSetToList(ResultSet rs) throws SQLException{ if (rs == null) return Collections.emptyList(); ResultSetMetaData md = rs.getMetaData(); // 得到結果集(rs)的結構信息 int columnCount = md.getColumnCount(); // 返回此 ResultSet 對象中的列數 List<Object> list = new ArrayList<Object>(); Map<Object, Object> rowData = new HashMap<Object, Object>(); while (rs.next()) { rowData = new HashMap<Object, Object>(columnCount); for (int i = 1; i <= columnCount; i++) { rowData.put(md.getColumnName(i), rs.getObject(i)); } list.add(rowData); } return list; } }
1.注冊驅動
Class.forname("com.mysql.jdbc.Driver");//這是連接mysql數據庫的驅動
2.獲取數據庫連接
java.sql.Connection conn=java.sql.DriverManager.getConnection(); 3.獲取表達式
java.sql.Statement stmt=conn.createStatement("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=GBK","root","null");//三個參數分別是數據庫連接的URL,用戶名,密碼 4.執行SQL
java.sql.ResultSet rs=stmt.executeQuery("select * from user"); 5.顯示結果集裡面的數據
while(rs.next()){
System.out.println(rs.getInt(1));
System.out.println(rs.getString("username"));
System.out.println(rs.getString("password"));
System.out.pringln();
}//執行插入語句
//stmt.executeUpdate("insert into user values(1,'中文','345')");
6.釋放資源
rs.close();
stmt.close();
conn.close();
創建對象是通過關鍵字new 創建的,這裡只是一個聲明,聲明con是一個Connection類型的,真正創建對象是在等號後面代碼。這個下面的熟悉的語句是一樣的 User user=new User();等號前面聲明類型,等號後面創建實例