我的方式是这个 DBConnection 是一个单例类。这个用法在 ContactDAO 类中。
public class DBConnection{
private static DBConnection instance;
private String url="jdbc:oracle:thin:@192.168.10.32:1521:orcl";
private String login="kit";
private String pass="1234";
private DBConnection(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
if (instance == null) {
instance = new DBConnection();
System.out.println(" Connection - - - - - - - - New DBConnection created");
}
try {
return DriverManager.getConnection(instance.url, instance.login,instance.pass);
} catch (SQLException e) {
throw e;
}
}
public static void close(Connection connection)
{
try {
if (connection != null) {
connection.close();
connection=null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
********* 联系道 *************
public class ContactDAO {
public List<Contact> findAll() {
List<Contact> list = new ArrayList<Contact>();
Connection c = null;
String sql = "SELECT * FROM KIT.CONTACT";
try {
c = DBConnection.getConnection();
Statement s = c.createStatement();
ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
list.add(processRow(rs));
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
DBConnection.close(c);
}
return list;
}
public List<Contact> findByCity(String city) {
List<Contact> list = new ArrayList<Contact>();
Connection c = null;
String sql = "SELECT * FROM KIT.CONTACT as e " + "WHERE UPPER(city) LIKE ? ";
try {
c = DBConnection.getConnection();
PreparedStatement ps = c.prepareStatement(sql);
ps.setString(1, "%" + city.toUpperCase() + "%");
ResultSet rs = ps.executeQuery();
while (rs.next()) {
list.add(processRow(rs));
}
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
DBConnection.close(c);
}
return list;
}
public Contact findById(int id) {
String sql = "SELECT * FROM KIT.CONTACT WHERE id = ?";
Contact contact = null;
Connection c = null;
try {
c = DBConnection.getConnection();
PreparedStatement ps = c.prepareStatement(sql);
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
contact = processRow(rs);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
DBConnection.close(c);
}
return contact;
}
public Contact save(Contact contact) {
return contact.getId() > 0 ? update(contact) : insert(contact);
}
public Contact insert(Contact contact) {
Connection c = null;
PreparedStatement ps = null;
try {
c = DBConnection.getConnection();
ps = c.prepareStatement(
"INSERT INTO KIT.CONTACT (country, city, address, photo,fk_user) VALUES (?, ?, ?, ?, ?)",
new String[] { "ID" });
ps.setString(1, contact.getCountry());
ps.setString(2, contact.getCity());
ps.setString(3, contact.getAddress());
ps.setString(4, contact.getPhoto());
ps.setInt(5, contact.getFk_user());
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
while(rs.next()){
int id = rs.getInt(1);
contact.setId(id);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
DBConnection.close(c);
}
return contact;
}
public Contact update(Contact contact) {
Connection c = null;
try {
c = DBConnection.getConnection();
PreparedStatement ps = c
.prepareStatement("UPDATE KIT.CONTACT SET country=?, city=?, address=?, photo=? WHERE id=?");
ps.setString(1, contact.getCountry());
ps.setString(2, contact.getCity());
ps.setString(3, contact.getAddress());
ps.setString(4, contact.getPhoto());
ps.setInt(5, contact.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("contactDAO update exception");
throw new RuntimeException(e);
} finally {
DBConnection.close(c);
}
return contact;
}
public boolean remove(int id) {
Connection c = null;
try {
c = DBConnection.getConnection();
PreparedStatement ps = c
.prepareStatement("DELETE FROM KIT.CONTACT WHERE id=?");
ps.setInt(1, id);
int count = ps.executeUpdate();
return count == 1;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
DBConnection.close(c);
}
}
protected Contact processRow(ResultSet rs) throws SQLException {
Contact contact = new Contact();
contact.setId(rs.getInt("id"));
contact.setCountry(rs.getString("country"));
contact.setCity(rs.getString("city"));
contact.setAddress(rs.getString("address"));
contact.setPhoto(rs.getString("photo"));
return contact;
}
}