1. 程式人生 > >對原生態jdbc(單獨使用jdbc開發)問題總結

對原生態jdbc(單獨使用jdbc開發)問題總結

在寫這個程式之前需要建立一個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物件。