1. 程式人生 > >數據庫鏈接JDBC

數據庫鏈接JDBC

todo .get exe boolean rate return timestamp 演示 tint

通過java_JDBC鏈接數據庫 jdbc: java操作數據庫.jdbc是oracle公司指定的一套規範(一套接口) 驅動:jdbc的實現類.由數據庫廠商提供. 我們就可以通過一套規範操作不同的數據庫了(多態) jdbc作用: 連接數據庫 發送sql語句 處理結果 步驟: 導入jar包:
  1. 註冊驅動
  2. 獲取鏈接
  3. 獲取執行者
  4. 執行sql語句
  5. 對結果進行操作
jdbc-api詳解: 所有的包 都是 java.sql 或者 javax.sql DriverManager:管理了一組jdbc的操作 類 常用方法: 了解:註冊驅動 static void registerDriver(Driver driver) : 通過查看 com.mysql.jdbc.Driver的源碼 有如下代碼 static { try { java.sql.DriverManager.registerDriver(new Driver());//這段代碼我們已經寫過 } catch (SQLException E) { throw new RuntimeException("Can‘t register driver!"); } } 驅動註冊了兩次.我們只需要將靜態代碼塊執行一次,類被加載到內存中會執行靜態代碼塊,並且只執行一次. 現在只需要將類加載到內存中即可: 方式1: ★Class.forName("全限定名");//包名+類名 com.mysql.jdbc.Driver 方式2: 類名.class; 方式3: 對象.getClass(); 掌握:獲取連接 static Connection getConnection(String url, String user, String password) 參數1:告訴我們連接什麽類型的數據庫及連接那個數據庫 協議:數據庫類型:子協議 參數 mysql: jdbc:mysql://localhost:3306/數據庫名稱 oracle: jdbc:oracle:[email protected]:[email protected]實例 參數2:賬戶名 root 參數3:密碼 (了解)Driver:java.sql 接口 驅動 Connection:連接 接口 常用方法: 獲取語句執行者: (了解)Statement createStatement() :獲取普通的語句執行者 會出現sql註入問題 ★PreparedStatement prepareStatement(String sql) :獲取預編譯語句執行者 (了解)CallableStatement prepareCall(String sql):獲取調用存儲過程的語句執行者 了解: setAutoCommit(false) :手動開啟事務 commit():提交事務 rollback():事務回滾 Statement:語句執行者 接口 PreparedStatement:預編譯語句執行者 接口 常用方法: 設置參數: setXxx(int 第幾個問號,Object 實際參數); 常見的方法: setInt setString setObject 執行sql: ResultSet executeQuery() :執行 r 語句 返回值:結果集 int executeUpdate() :執行cud 語句 返回值:影響的行數 ResultSet:結果集 接口 執行查詢語句之後返回的結果 常用方法: boolean next():判斷是否有下一條記錄,若有返回true且將光標移到下一行,若沒有呢則返回false 光標一開始處於第一條記錄的上面 獲取具體內容 getXxx(int|string) 若參數為int :第幾列 若參數為string:列名(字段名) 例如: 獲取cname的內容可以通過 getString(2) getString("cname") 常用方法: getInt getString 也可以獲取int值 getObject 可以獲取任意
 1
//代碼演示: 2 //我們封裝一個工具類來提高代碼的擴展性 3 public class JDBCUtils { 4 private static final String url="jdbc:mysql://localhost:3306/test"; 5 private static final String username="root"; 6 private static final String password = "root"; 7 /** 8 * 註冊驅動 9 */
10 static { 11 try { 12 Class.forName("com.mysql.jdbc.Driver"); 13 } catch (ClassNotFoundException e) { 14 // TODO Auto-generated catch block 15 e.printStackTrace(); 16 } 17 } 18 /**
19 * 獲取鏈接 20 * @return 21 */ 22 public static Connection getConnention() { 23 Connection connection=null; 24 try { 25 connection = DriverManager.getConnection(url,username,password); 26 } catch (SQLException e) { 27 // TODO Auto-generated catch block 28 e.printStackTrace(); 29 } 30 return connection; 31 } 32 /** 33 * 通過可變參關閉連接 34 * @param objects 35 */ 36 public static void colse(Object ...objects) { 37 try { 38 if (objects!=null && objects.length>0) { 39 for(int i = 0;i<objects.length;i++) { 40 if(objects[i] instanceof Statement) { 41 ((Statement)objects[i]).close(); 42 }else if(objects[i] instanceof Connection) { 43 ((Connection)objects[i]).close(); 44 } 45 } 46 } 47 } catch (Exception e) { 48 e.printStackTrace(); 49 } 50 } 51 }
 1 // 對工具類的使用
 2 public class JDBCDemo {
 3      public static void main(String[] args) {
 4           //獲取鏈接
 5           Connection connection = JDBCUtils.getConnention();
 6           //獲取執行者
 7           ResultSet resultSet=null;
 8           PreparedStatement pStatement=null;
 9  
10           //定義將要執行的sql語句
11           String sql = "select * from products where cno=?";
12           //存放結果集對象
13           List<Product> list = new ArrayList<Product>();
14           try {
15               //獲取語句執行者對象
16               pStatement = connection.prepareStatement(sql);
17               //設置參數
18               pStatement.setInt(1, 1);
19               //執行查詢操作
20               resultSet = pStatement.executeQuery();
21               //遍歷結果集
22               while (resultSet.next()) {
23                    Product product = new Product();
24                    product.setId(resultSet.getInt("pid"));
25                    product.setName(resultSet.getString("pname"));
26                    product.setPrice(resultSet.getInt("price"));
27                    product.setNum(resultSet.getInt("pnum"));
28                    product.setCno(resultSet.getInt("cno"));
29                    product.setTimestamp(resultSet.getTimestamp("pdate"));
30                    list.add(product);
31               }
32           } catch (SQLException e) {
33               // TODO Auto-generated catch block
34               e.printStackTrace();
35           }finally {
36               //關閉連接
37               JDBCUtils.colse(pStatement,connection);
38           }
39           for (Product product : list) {
40               System.out.println(product);
41           }
42      }
43 }

數據庫鏈接JDBC