??DBHelper(DataBase Helper)主要用于幫助我們進行對數據庫的操作,我們會在其中創建一個獲取數據庫連接的方法。我們將放在utile包內,util包作為工具包。 ??為了能夠對mysql數據庫進行訪問,我們需要一個連接mysql的jar包:mysql-connector-java-5.0.5-bin.jar。點擊這里下載。下載之后放在WEB-INF的lib目錄中即可。
package util;import java.sql.Connection;import java.sql.DriverManager;public class DBHelper {// 數據庫驅動 PRivate static final String driver = "com.mysql.jdbc.Driver";// 連接數據庫的URL地址,這里使用的是mysql的默認端口3306 private static final String url = "jdbc:mysql://localhost:3306/simpleshop";// 數據庫登陸信息,我這里不使用root用戶,一般對與一個項目,我們可以創建一個獨立的具有部分權限用戶出來,root用戶一般都只是用于管理數據庫 private static final String username = "superboy"; private static final String passWord = "iamsuperboy"; private static Connection conn = null;// 靜態代碼塊負責加載驅動// 一般情況下,如果有些代碼必須在項目啟動的時候就執行的時候,需要使用靜態代碼塊,這種代碼是主動執行的,且優先于主函數。 static{ try{ Class.forName(driver); }catch(Exception ex){ ex.printStackTrace(); } } public static Connection getConnection() throws Exception{ if(conn == null){ conn = DriverManager.getConnection(url,username,password); return conn; } return conn; }}寫完之后,為了確認是否可以正常連接,我們可以寫一個這樣的主函數進行測試。
public static void main(String[] args) { try{ //獲取一個連接 Connection conn = DBHelper.getConnection(); if(conn!=null){ System.out.println("數據庫連接正常!"); }else{ System.out.println("數據庫連接異常!"); } }catch(Exception ex){ ex.printStackTrace(); }}關于Class.forName ??加載數據庫驅動的時候我們通常會使用Class.forName進行加載。而Class.forName(xxx.xx.xx)的作用是要求JVM查找并加載指定的類,也就是說JVM會執行該類的靜態代碼段,因此,如果在類中有靜態初始化器的話,JVM必然會執行該類的靜態代碼段。而在JDBC規范中明確要求這個Driver類必須向DriverManager注冊自己,即任何一個JDBCDriver的Driver類的代碼都必須類似如下。既然在靜態初始化器的中已經進行了注冊,所以我們在使用JDBC時只需要Class.forName(xxx.xx.xx);就可以了。這里的xxx.xxx.xx指向一個類。
public classMyJDBCDriver implements Driver { static{ DriverManager.registerDriver(new MyJDBCDriver()); }}??所以,利用靜態代碼塊負責加載驅動,可以在程序開始執行時,加載到數據庫驅動,而且只會執行一次。值得一提的是,這里的DBHelper類的是一個單例模式。該模式的一個優點是:利于控制實例數目,節省系統資源。
新聞熱點
疑難解答