開發中獲得連接的4個參數(驅動、URL、用戶名、密碼)通常都存在配置文件中,方便后期維護,程序如果需要更換數據庫,只需要修改配置文件即可。
通常情況下,我們習慣使用properties文件,此文件我們將做如下要求:
- 文件位置:任意,建議src下
- 文件名稱:任意,擴展名為properties
- 文件內容:一行一組數據,格式是“key=value”.
a) key命名自定義,如果是多個單詞,習慣使用點分隔。例如:jdbc.driver
b) value值不支持中文,如果需要使用非英文字符,將進行unicode轉換。
1、src目錄下創建Properties文件
2、對應properties文件處理,開發中也使用Properties對象進行。我們將采用加載properties文件獲得流,然后使用Properties對象進行處理。
package cn.bruce.Properties; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; //開發中獲得連接的4個參數(驅動、URL、用戶名、密碼)通常都存在配置文件中,方便后期維護,程序如果需要更換數據庫,只需要修改配置文件即可。 //通常情況下,我們習慣使用properties文件,此文件我們將做如下要求: //1. 文件位置:任意,建議src下 //2. 文件名稱:任意,擴展名為properties //3. 文件內容:一行一組數據,格式是“key=value”. public class JDBCUtils { private static String driverClass, url, usename, password; private static Connection con; // 靜態代碼塊只執行一次 static { try { con(); // con1(); Class.forName(driverClass); con = DriverManager.getConnection(url, usename, password); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("數據庫連接失敗!"); } } public static Connection getcon() { return con; } // 1、第一種方法 input流+load(InputStream) //這種方法可以不在項目根目錄建立properties文件 只在SRC目錄下建立 private static void con() throws IOException { Properties pro = new Properties(); InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("database.properties"); pro.load(in); driverClass = pro.getProperty("driverClass"); url = pro.getProperty("url"); usename = pro.getProperty("usename"); password = pro.getProperty("password"); } // 第二種方法 // 1 使用Properties處理流 // 使用load()方法加載指定的流 //在項目跟目錄下,創建文件,輸入“db.properties”文件名。 private static void con1() throws Exception { Properties po = new Properties(); Reader r = new FileReader("database.properties"); po.load(r); driverClass = po.getProperty("driverClass"); url = po.getProperty("url"); usename = po.getProperty("usename"); password = po.getProperty("password"); } }
3、測試
package cn.bruce.Properties; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; public class JDBCUtilsTest { public static void main(String[] args) { Connection connection = JDBCUtils.getcon(); System.out.println(connection); try { PreparedStatement ps = connection.prepareStatement("select * from users;"); ResultSet rs = ps.executeQuery(); while (rs.next()) { System.out.println(rs.getString("zusename") + " " + rs.getString("zpassword")); } } catch (Exception e) { e.printStackTrace(); } } }