對原生態jdbc(單獨使用jdbc開發)問題總結
阿新 • • 發佈:2019-02-12
在寫這個程式之前需要建立一個java工程,這是前提
接著加入mysql的驅動包,我用的資料庫是5.1版本的,所以驅動包也是5.1版本的,jdk是1.7
建立資料庫位mybatis,表名位user
package com.mybatis.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * JDBC操作資料庫 * @author Administrator * */ public class JDBCTest { public static void main(String[] args) { //資料庫連結 Connection connection=null; //預編譯的Statement,可以提高資料庫效能 PreparedStatement preparedStatement=null; //結果集 ResultSet resultSet=null; try { //載入資料庫驅動 Class.forName("com.mysql.jdbc.Driver"); //通過驅動管理類來獲取資料庫連結 connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "123456"); //定義sql語句,?表示佔位符 String sql="select * from user where id=?"; //獲取預處理的statement preparedStatement=connection.prepareStatement(sql); //設定sql引數,第一個引數是sql中的引數的序號(從1開始),第人體各引數是設定的值 preparedStatement.setInt(1, 1); //向資料庫發出sql請求,查詢結果集 resultSet=preparedStatement.executeQuery(); //遍歷查詢結果集 while (resultSet.next()) { System.out.println(resultSet.getString(2)); } } catch (Exception e) { e.printStackTrace(); }finally{ try { //關閉連線 resultSet.close(); preparedStatement.close(); connection.close(); } catch (Exception e2) { e2.printStackTrace(); } } } }
根據以上編碼步驟,我們得到以下結論:
1、 載入資料庫驅動
2、 建立並獲取資料庫連結
3、 建立jdbcstatement物件
4、 設定sql語句
5、 設定sql語句中的引數(使用preparedStatement)
6、 通過statement執行sql並獲取結果
7、 對sql執行結果進行解析處理
8、 釋放資源(resultSet、preparedstatement、connection)
以上是一個簡單的用jdbc操作資料庫的例子,那麼來簡單的說下這樣操作資料庫會有一些怎樣的問題。
1、資料庫連線,使用時就建立,不適用就釋放,對資料庫進行頻繁的開啟和關閉操作,這是種資源的浪費,影響資料庫效能。
設想:使用資料庫連線池管理資料庫連線。
2、將sql語句硬編碼到Java程式碼中,如果sql語句修改,需要重新編譯Java程式碼,不利於系統維護。
設想:將sql語句配置在xml配置檔案中,即使sql變化,也不需要對java程式碼進行修改重新編譯。
3、向preparedStatement中設定引數,對佔位符位置引數值,硬編碼在java中,不利於系統維護。
設想:將sql語句及佔位符和引數全部配置在xml中。
4、從resultSet中遍歷結果集資料時,存在硬編碼,將獲取表的欄位進行硬編碼,不利於系統維護。
設想:將結果集對映成java物件。