package util;import java.io.File;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;/*** jdbc通用的方法* @author mzy**/
public class JdbcUtil {//urlprivate static String url = null;//userprivate static String user = null;//passwordprivate static String password = null;//驅動程序類private static String driverClass = null;/*** 只注冊一次,靜態代碼塊*/static{//注冊驅動程序try {/*** 讀取jdbc.properties文件*///1)創建Properties對象Properties prop = new Properties();//構造輸入流/*** 相對路徑: . 這個點代表當前目錄。當前目錄本質上是java命令運行的目錄* java項目: 在ecplise中,當前目錄指向項目的根目錄。* web項目: 當前目錄指向%tomcat%/bin目錄* 1)結論: 在web項目不能使用相對路徑* * web項目中加載配置文件: ServletContext.getRealPath() / getResourceAsStream() 這種方式對于jdbcUtil這個工具而言,放到java項目中找不到ServletContext對象,不通用的!* 2)不能使用ServletContext讀取文件* * 3)使用類路徑方式讀取配置文件* *///1)獲取類的對象Class clazz = JdbcUtil.class;//2) 使用類路徑的讀取方法去讀取文件/*** 這個斜杠:代表項目的類路徑的根目錄。 類路徑: 查詢類的目錄/路徑* java項目下: 類路徑的根目錄,指向項目的bin目錄* web項目下:類路徑的根目錄,指向項目的WEB-INF/classes目錄* * 只有把配置文件放在src目錄的根目錄下,那么這些文件就會自動拷貝到項目的類路徑根目錄下。*/InputStream in = clazz.getResourceAsStream("/jdbc.properties");// File f = new File(clazz.getResource("/").getFile());// System.out.println(f.getAbsolutePath());//構造輸入流// InputStream in = new FileInputStream("./src/jdbc.properties");//2)加載文件prop.load(in);//3)讀取文件內容url = prop.getProperty("url");user = prop.getProperty("user");password = prop.getProperty("password");driverClass = prop.getProperty("driverClass");// 測試是否從properties中讀到System.out.println(url);System.out.println(user);System.out.println(password);System.out.println(driverClass);Class.forName(driverClass);} catch (Exception e) {e.printStackTrace();}}/*** 獲取連接方法*/public static Connection getConnection(){try {Connection conn = DriverManager.getConnection(url, user, password);return conn;} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}}/*** 釋放資源的方法*/public static void close(Statement stmt,Connection conn){if(stmt!=null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}}}/*** 釋放資源的方法*/public static void close(ResultSet rs,Statement stmt,Connection conn){if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}}if(stmt!=null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}}}public static void main(String[] args) {System.out.println(JdbcUtil.getConnection());}}
注意:
????? ? 其中的jdbc.properties文件在src目錄下:
jdbc.properties配置文件。?
jdbc.properties中的內容如下:
url=jdbc:mysql://localhost:3306/test
user=root
password=123456
driverClass=com.mysql.jdbc.Driver