JAVA Database Connectivity java 數據庫鏈接java
爲何會出現JDBCmysql
SUN公司提供的一種數據庫訪問規則、規範, 因爲數據庫種類較多,而且java語言使用比較普遍,sun公司就提供了一種規範,讓其餘的數據庫提供商去實現底層的訪問規則。 咱們的java程序只要使用sun公司提供的jdbc驅動便可。sql
註冊驅動數據庫
DriverManager.registerDriver(new com.mysql.jdbc.Driver());工具
創建鏈接優化
//DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");
//2. 創建鏈接 參數一: 協議 + 訪問的數據庫 , 參數二: 用戶名 , 參數三: 密碼。
conn = DriverManager.getConnection("jdbc:mysql://localhost/students", "root", "root");url
建立statementspa
//3. 建立statement , 跟數據庫打交道,必定須要這個對象
st = conn.createStatement();code
執行sql ,獲得ResultSetorm
//4. 執行查詢 , 獲得結果集
String sql = "select * from t_student1";
rs = st.executeQuery(sql);
遍歷結果集
//5. 遍歷查詢每一條記錄
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id="+id + "===name="+name+"==age="+age);
}
釋放資源
if (rs != null) { try { rs.close(); } catch (SQLException sqlEx) { } // ignore rs = null; } ...
優化:
資源釋放工做的整合
驅動防二次註冊
DriverManager.registerDriver(new com.mysql.jdbc.Driver()); Driver 這個類裏面有靜態代碼塊,一上來就執行了,因此等同於咱們註冊了兩次驅動。 其實沒這個必要的。 //靜態代碼塊 ---> 類加載了,就執行。 java.sql.DriverManager.registerDriver(new Driver()); 最後造成如下代碼便可。 Class.forName("com.mysql.jdbc.Driver");
使用properties配置文件
在src底下聲明一個文件 xxx.properties ,裏面的內容吐下:
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/student
name=root
password=root
在工具類裏面,使用靜態代碼塊,讀取屬性
static{ try { //1. 建立一個屬性配置對象 Properties properties = new Properties(); InputStream is = new FileInputStream("jdbc.properties"); //對應文件位於工程根目錄 //使用類加載器,去讀取src底下的資源文件。 後面在servlet //對應文件位於src目錄底下 //InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"); //導入輸入流。 properties.load(is); //讀取屬性 driverClass = properties.getProperty("driverClass"); url = properties.getProperty("url"); name = properties.getProperty("name"); password = properties.getProperty("password"); } catch (Exception e) { e.printStackTrace(); } }