JDBC連接MySQL 方法 實例及資料收集
准備工作
首先,安裝MySQL,配置用戶名和密碼,創建數據庫。
可參見之前的文章:
http://www.cnblogs.com/mengdd/p/3154638.html
http://www.cnblogs.com/mengdd/p/3154922.html
准備驅動包
要用JDBC連接MySQL,需要一個驅動包:
可以去這里下載(其實完整安裝MySQL后可以在安裝路徑中找到這個包):
http://www.mysql.com/products/connector/
解壓后將其中的mysql-connector-java-XXX-bin.jar文件加入到Web Project的lib中:
JDBC代碼編寫
首先,需要加載驅動:
// 加載驅動 Class.forName("com.mysql.jdbc.Driver");
然后,建立連接:
String dbUrl = "jdbc:mysql://localhost:3306/mydatabase1"; String dbUser = "your_username"; String dbPwd = "your_password"; // 打開數據庫連接 con = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
注意其中的端口號和數據庫名(mydatabase1)可能需要修改。
JDBC連接不同數據庫:
之后就可以執行SQL語句了。
最后要記得關閉資源。
實踐程序
完整Helper類代碼(感謝ZJL同學無私奉獻悉心指導):
package com.meng.utils; import java.sql.*; public class JDBCHelper { private Connection con = null; private PreparedStatement stmt = null; private ResultSet rs = null; public JDBCHelper() { try { // 加載驅動 Class.forName("com.mysql.jdbc.Driver"); String dbUrl = "jdbc:mysql://localhost:3306/mydatabase1"; String dbUser = "mengdd"; String dbPwd = "881103"; // 打開數據庫連接 con = DriverManager.getConnection(dbUrl, dbUser, dbPwd); } catch (ClassNotFoundException e) { System.out.println("Error: unable to load driver class!"); System.out .println("please check if you hava the mysql-connector jar file in your lib dir!"); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public ResultSet executeResultSet(String sql) { return executeResultSet(sql, null); } public ResultSet executeResultSet(String sql, Object[] params) { try { // 創建一個JDBC聲明 stmt = con.prepareStatement(sql); if (null != params && params.length != 0) { for (int i = 0; i < params.length; i++) { stmt.setObject(i + 1, params[i]); } } rs = stmt.executeQuery(); return rs; } catch (Exception ex) { throw new RuntimeException(ex.getMessage(), ex); } } public int executeUpdate(String sql) { return executeUpdate(sql, null); } public int executeUpdate(String sql, Object[] params) { try { // 創建一個JDBC聲明 stmt = con.prepareStatement(sql); if (null != params && params.length != 0) { for (int i = 0; i < params.length; i++) { stmt.setObject(i + 1, params[i]); } } return stmt.executeUpdate(); } catch (Exception ex) { throw new RuntimeException(ex.getMessage(), ex); } } public void close() { try { // 應該明確地關閉所有的數據庫資源 if (null != rs) rs.close(); if (null != stmt) stmt.close(); if (null != con) con.close(); } catch (SQLException e) { throw new RuntimeException(e); } } }
測試代碼:
package com.meng.test; import java.sql.ResultSet; import java.sql.SQLException; import com.meng.utils.JDBCHelper; public class Test { public static void main(String[] args) { JDBCHelper dbHelper = new JDBCHelper(); ResultSet resultSet = dbHelper.executeResultSet("SELECT * FROM pet;"); try { while (resultSet.next()) { System.out.println("-------------"); System.out.println("name: " + resultSet.getString("name")); System.out.println("birth: " + resultSet.getString("birth")); } } catch (SQLException e) { e.printStackTrace(); } finally { dbHelper.close(); } } }
結果:
------------- name: Tutu birth: 2013-03-01 ------------- name: Whistler birth: 1997-12-09 ------------- name: WangWang birth: 2008-09-30 ------------- name: MiaoMiao birth: 2012-01-01
參考資料
官方文檔:
Java SE Technologies – Database
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136101.html
JDBC Overview
http://www.oracle.com/technetwork/java/overview-141217.html
JDBC API
http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/
Tutorial JDBC basic
http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html
Getting Started:
http://docs.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html
The JDBC classes are contained in the Java package java.sql and javax.sql
JDBC教程:
http://www.yiibai.com/jdbc/jdbc-db-connections.html