一、直接連接,不封裝到工具類中,主要步驟:
先導包:mysql-connector-java-5.0.8-bin.jar(點擊跳轉到下載界面),放在WebRoot/WEB-INF/lib/下
1.加載驅動//com.mysql.jdbc.Driver
2.獲取連接 Connection對象
3.獲取用於向數據庫發送SQL的Statement對象
4.執行sql,獲取數據,解析數據
5.關閉連接,釋放資源
/* 協議:子協議://主機:端口/數據庫名 */
String url = "jdbc:mysql://localhost:3306/jdbctest";
// mysql數據庫的用戶名與密碼,安裝時自己設置,一般默認爲root
String user = "root";
String password = "root";
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 1.加載驅動//com.mysql.jdbc.Driver
/*
* DriverManager.registerDriver(new
* Driver());用這種方法會加載兩次驅動,也就是說會創建兩個drive對象
*/
Class.forName("com.mysql.jdbc.Driver");
// 2.獲取連接
connection = DriverManager.getConnection(url, user, password);
// 3.獲取用於向數據庫發送SQL的Statement對象
statement = connection.createStatement();
// 4.執行sql,獲取數據
resultSet = statement.executeQuery("SELECT * FROM users;");
// 解析數據
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String psd = resultSet.getString("password");
String email = resultSet.getString("email");
String birthday = resultSet.getString("birthday");
System.out.println(id + " " + name + " " + psd + " " + email
+ " " + birthday);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//5.關閉連接,釋放資源
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
resultSet = null;
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
statement = null;
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
connection = null;
}
}
二、將數據庫連接封裝成一個工具類
這樣做的好處是,在實際開發中,就能做到,改一處即可修改全局。
1.建一個名爲db.properties的配置文件,放於src/
url=jdbc:mysql://localhost:3306/jdbctest
username=root
password=root
driver=com.mysql.jdbc.Driver
2.工具類:
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JdbcUtil {
//私有靜態變量,用以讀取配置文件
private static Properties config=new Properties();
static{
try {
//配置資源文件
config.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));
//加載驅動
Class.forName(config.getProperty("driver"));
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection connection=null;
try {
connection=DriverManager.getConnection(config.getProperty("url"),config.getProperty("username"),config.getProperty("password"));
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
//用以關閉連接,釋放資源
public static void releaseConn(Connection connection, Statement statement,
ResultSet resultSet) {
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
resultSet=null;
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
statement=null;
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
connection=null;
}
}
}
3.使用實例:
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 調用工具類中的靜態方法來獲取連接
connection = JdbcUtil.getConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery("select * from users");
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String psd = resultSet.getString("password");
String email = resultSet.getString("email");
String birthday = resultSet.getString("birthday");
System.out.println(id + " " + name + " " + psd + " " + email
+ " " + birthday);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 調用工具類中的靜態方法來關閉連接,釋放資源
JdbcUtil.releaseConn(connection, statement, resultSet);
}
}