準備工作
// 保存靜態的連接
private static Connection connection =null;
static {
try {
// 靜態加載mysql驅動
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 防止用戶創建實例
*/
private DBAccess(){}
/**
* 獲取類的實例
* @param dbURL 數據源
* @param dbName 數據庫名稱
* @param user 用戶
* @param password 密碼
* @return 類的單例
*/
public static DBAccess getInstance(String dbURL, String dbName, String user, String password){
getInstance(dbURL, dbName, user, password);
return InnerClass.dbAccess;
}
static class InnerClass{
static DBAccess dbAccess = new DBAccess();
}
// 獲取或更新數據庫的連接
protected static Connection getConnection(String dbURL, String dbName, String user, String password){
try {
if (connection == null || connection.isClosed())
connection = DriverManager.getConnection(String.format("jdbc:mysql://%s:3306/%s?user=%s&password=%s", dbURL, dbName, user, password));
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
對增刪該查的封裝
/**
* 增、改、刪
* @param sql
* @param objects
* @return 修改的記錄條數
*/
public int insertOrUpdateOrDelete(String sql, Object[] objects){
PreparedStatement preparedStatement = null;
int count = 0;
try {
preparedStatement = connection.prepareStatement(sql);
if (objects != null){
for (int i = 0; i < objects.length; i ++){
preparedStatement.setObject(i + 1, objects[i]);
}
}
count = preparedStatement.executeUpdate();
preparedStatement.close();
connection.commit();
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}
/**
* 查詢
* @param sql
* @return 結果集
*/
public ResultSet find(String sql, Object[] objects){
ResultSet set = null;
PreparedStatement preparedStatement = null;
List<Worker> list = null;
try{
preparedStatement = connection.prepareStatement(sql);
if (objects != null){
for (int i = 0; i < objects.length; i ++){
preparedStatement.setObject(i + 1, objects[i]);
}
}
set = preparedStatement.executeQuery(sql);
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
return set;
}
用法
/**
* 插入員工
* @param worker
* @return
*/
public int addWorker(Worker worker){
DBAccess dao = DBAccess.getInstance("localhost", "demo", "root", "root");
Object[] objects = {worker.getName(), worker.getSex(), worker.getAge(), worker.getPosition(), worker.getTel()};
return dao.insertOrUpdateOrDelete("insert into worker values(null, ? , ? ,?, ?, ?)", objects);
}
/**
* 刪除員工
* @param workerId
* @return
*/
public int deleteWorker(int workerId){
DBAccess dao = DBAccess.getInstance("localhost", "demo", "root", "root");
return dao.insertOrUpdateOrDelete("delete from worker where id=?", new Object[]{workerId});
}
/**
* 查詢所有員工
* @return
*/
public ResultSet getAllWorker(){
DBAccess dao = DBAccess.getInstance("localhost", "demo", "root", "root");
return dao.find("select * from worker", null);
}
/**
* 更新表數據
* @param worker
* @return
*/
public int updateWorker(Worker worker){
DBAccess dao = DBAccess.getInstance("localhost", "demo", "root", "root");
Object[] objects={worker.getName(), worker.getSex(), worker.getAge(), worker.getPosition(), worker.getTel()};
return dao.insertOrUpdateOrDelete("update worker set name=?, sex=?, age=?, position=?, tel=?", objects);
}