1. 程式人生 > >單獨使用JDBC編程

單獨使用JDBC編程

gen XML nag drive 語句 類型 str nal 存在

一.jdbc編程步驟

1、 加載數據庫驅動

2、 創建並獲取數據庫鏈接

3、 創建jdbc statement對象

4、 設置sql語句

5、 設置sql語句中的參數(使用preparedStatement)

6、 通過statement執行sql並獲取結果

7、 對sql執行結果進行解析處理

8、 釋放資源(resultSet、preparedstatement、connection)

Public static void main(String[] args) {
            Connection connection = null;
            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", "mysql");
//定義sql語句 ?表示占位符 String sql = "select * from user where username = ?"; //獲取預處理statement preparedStatement = connection.prepareStatement(sql); //設置參數,第一個參數為sql語句中參數的序號(從1開始),第二個參數為設置的參數值 preparedStatement.setString(1, "王五");
//向數據庫發出sql執行查詢,查詢出結果集 resultSet = preparedStatement.executeQuery(); //遍歷查詢結果集 while(resultSet.next()){ System.out.println(resultSet.getString("id")+" "+resultSet.getString("username")); } } catch (Exception e) { e.printStackTrace(); }finally{ //釋放資源 if(resultSet!=null){ try { resultSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(preparedStatement!=null){ try { preparedStatement.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(connection!=null){ try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

問題總結:

1、程序中存在硬編碼(數據驅動加載,創建數據連接、sql語句),不利於系統維護。

設想解決硬編碼:可以sql語句等信息配置在xml中。

2、數據庫連接使用時打開不時立即關閉,頻繁開關連接對數據庫資源是一種浪費。

設想解決方案:使用數據庫連接池。

3、向preparedStatement設置參數時 將參數下標 號(從1開始)硬編碼在代碼,並且將向占位符號設置的參數也硬編碼了。

設想解決方案:可以自動通過程序將java類型對象映射到preparedStatement中。

4、從Resultset中取出結果集進行遍歷,將列名硬編碼

設想解決方案:可以自動通過程序將sql查詢結果集映射到時java對象中,自動完成將sql查詢的列值構造成一個java對象。

單獨使用JDBC編程