JDBCツールクラスの抽出
文書ディレクトリ一、概念 二、コード実装 一、概念
書くのを簡単にするためです
分析:
二、コード実装作成プロファイル:jdbc.properties(同じプロジェクトのsrcディレクトリの下に置く必要がある)
これにより、後でデータベースを交換するたびに、このプロファイルを変更するだけで、呼び出しによって使用することができる.JDBCUtilsを作成し、上記の分析のニーズをカプセル化する
JDBCツールクラスのjdbcDemoを呼び出す
書くのを簡単にするためです
分析:
(1)
(2)
* : ( ), 。
* :
jdbc.properties
url=
user=
password=
(3)
二、コード実装
url=jdbc:mysql:///db
user=root
password=root
driver=com.mysql.jdbc.Driver
これにより、後でデータベースを交換するたびに、このプロファイルを変更するだけで、呼び出しによって使用することができる.JDBCUtilsを作成し、上記の分析のニーズをカプセル化する
/**
* JDBC
*/
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* , , ( )
*/
static{
// , 。
try {
//1. Properties 。
Properties pro = new Properties();
// src --->ClassLoader
ClassLoader classLoader = JDBCUtils.class.getClassLoader();
// url
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();//
//2.
pro.load(new FileReader(path));
//3. ,
url = pro.getProperty("url");
user = pro.getProperty("user");
password = pro.getProperty("password");
driver = pro.getProperty("driver");
//4.
Class.forName(driver);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
*
* @return
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
// ,
/**
*
* @param stmt
* @param conn
*/
public static void close(Statement stmt,Connection conn){
if( stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
*
* @param stmt
* @param conn
*/
public static void close(ResultSet rs,Statement stmt, Connection conn){
if( rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
JDBCツールクラスのjdbcDemoを呼び出す
/**
* * , emp , , 。
*/
public class JDBCDemo8 {
public static void main(String[] args) {
List<Emp> list = new JDBCDemo8().findAll();
System.out.println(list);
System.out.println(list.size());
}
/**
* JDBC
* @return
*/
public List<Emp> findAll(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
List<Emp> list = null;
try {
conn = JDBCUtils.getConnection();
//3. sql
String sql = "select * from emp";
//4. sql
stmt = conn.createStatement();
//5. sql
rs = stmt.executeQuery(sql);
//6. , ,
Emp emp = null;
list = new ArrayList<Emp>();
while(rs.next()){
//
int id = rs.getInt("id");
String ename = rs.getString("ename");
int job_id = rs.getInt("job_id");
int mgr = rs.getInt("mgr");
Date joindate = rs.getDate("joindate");
double salary = rs.getDouble("salary");
double bonus = rs.getDouble("bonus");
int dept_id = rs.getInt("dept_id");
// emp ,
emp = new Emp();
emp.setId(id);
emp.setEname(ename);
emp.setJob_id(job_id);
emp.setMgr(mgr);
emp.setJoindate(joindate);
emp.setSalary(salary);
emp.setBonus(bonus);
emp.setDept_id(dept_id);
//
list.add(emp);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
JDBCUtils.close(rs,stmt,conn);
}
return list;
}
}