import java.sql.Connection;
import java.sql.DriverManager;
/**
* 數據庫操作的基礎類,它是其他的DAO類的父類
* 定義了建立數據庫連接和關閉數據庫連接的方法
*/
public class DAOBase {
private Connection connection;
// 得到數據庫連接
public Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/patientims","root", "root");
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
// 關閉數據庫連接
public void closeConnnection() {
try {
connection.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection = null;
}
}
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.yinger.patientims.model.Patient;
import com.yinger.patientims.util.DBUtil;
public class PatientDAO extends DAOBase {
// 得到所有住院的病人的信息
// SELECT
// p.id,p.name,p.age,p.sex,p.address,p.logtime,p.phone,d.name,b.sickbedno,r.sickroomno
// FROM t_patient p,t_department d,t_sickbed b,t_sickroom r
// WHERE p.sickbed_id=b.id and b.sickroom_id=r.id and r.department_id=d.id
public List<Patient> getPatientInfoList() {
Patient patient;
List<Patient> list= new ArrayList<Patient>();
// 注意:這裏有兩個name,要使用到別名
String sql = "SELECT p.id,p.name as pname,p.age,p.sex,p.address,p.logtime,p.phone,d.name as dname,b.sickbedno,r.sickroomno "
+ "FROM t_patient p,t_department d,t_sickbed b,t_sickroom r "
+ "WHERE p.sickbed_id=b.id and b.sickroom_id=r.id and r.department_id=d.id";
Connection connection = null;
// 在finally中使用它是它必須要初始化
// 還有,它一定要放在外面,這樣在try外面(finally)纔可以被訪問到
// 還有,一定要有finally!關閉數據庫連接是很重要的!
try {
connection = getConnection();
PreparedStatement pStatement = connection.prepareStatement(sql);
ResultSet resultSet = pStatement.executeQuery();
while (resultSet.next()) {
patient = setOnePatient(resultSet);
list.add(patient);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
// 將數據庫中的一條patient記錄關聯到一個Patient對象中
// 並且它不處理異常,拋出由上層處理
private Patient setOnePatient(ResultSet resultSet)throws Exception {
Patient patient = new Patient();
if (resultSet.getLong("id")!= 0) {
patient.setId(resultSet.getLong("id"));
}
if (resultSet.getString("pname")!= null) {
patient.setName(resultSet.getString("pname"));
}
if (resultSet.getString("sex")!= null) {
patient.setSex(resultSet.getString("sex"));
}
if (resultSet.getString("phone")!= null) {
patient.setPhone(resultSet.getString("phone"));
}
if (resultSet.getString("address")!= null) {
patient.setAddress(resultSet.getString("address"));
}
if (resultSet.getInt("age")!= 0) {
patient.setAge(resultSet.getInt("age"));
}
if (resultSet.getDate("logtime")!= null) {
patient.setLogtime(resultSet.getDate("logtime"));
}
if (resultSet.getString("dname")!= null) {
// 注意這一步!這裏容易發生空指針異常!在一個Patient對象中Department等屬性並沒有被初始化!
// 所以要在類中new出各個對象,對於SickRoom等等同理
patient.getDepartment().setName(resultSet.getString("dname"));
}
if (resultSet.getInt("sickbedno")!= 0) {
patient.getSickbed().setSickBedNo(resultSet.getInt("sickbedno"));
}
if (resultSet.getInt("sickroomno")!= 0) {
patient.getSickroom().setSickRoomNo(resultSet.getInt("sickroomno"));
}
return patient;
}
// 刪除病人信息
public boolean deletePatient(Patient patient) {
Long id = patient.getId();
Connection connection = null;
String sql = "delete from t_patient where id= "+ id + " ";
try {
connection = getConnection();
PreparedStatement pStatement = connection.prepareStatement(sql);
int res = pStatement.executeUpdate();
if (res > 0) {
return true; // 注意:這裏雖然是return了,但是這個方法真正返回之前還是要執行finally
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
// 添加病人住院信息
public boolean insertPatient(Patient patient) {
Connection connection = null;
// INSERT INTO
// t_patient(name,sex,age,phone,logtime,address,sickbed_id) VALUES
// ('patient"+i+"','女',37,'1533535354','2011-10-10','TianJin',"+id+")
String sql = "INSERT INTO t_patient(name,sex,age,phone,logtime,address,sickbed_id) VALUES ('"+ patient.getName() + "','" + patient.getSex()+ "',"
+ patient.getAge() + ",'" + patient.getPhone()+ "','" + DBUtil.simpleDateFormat.format(patient.getLogtime()) + "','" + patient.getAddress()+ "',"
+ patient.getSickbed().getId() + ")"; //字符串用'"+ patient.getName() + "',整形用"+ patient.getAge() + "
//patient.getLogtime().toLocaleString() 已經不推薦使用了
//注意:時間是有點特別地是使用 DateFormater進行format一下!
try {
connection = getConnection();
PreparedStatement pStatement = connection.prepareStatement(sql);
int res = pStatement.executeUpdate();
if (res > 0) {
return true; // 注意:這裏雖然是return了,但是這個方法真正返回之前還是要執行finally
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
// 修改病人住院信息
public boolean updatePatient(Patient patient) {
Connection connection = null;
//UPDATE t_patient as p set p.name='yyh' , p.address='ghalsdhgl' , p.age=24 , p.phone='523659365', p.sex='female'
// where id=6
StringBuffer sql = new StringBuffer("UPDATE t_patient as p ");
sql.append(" set p.name='"+patient.getName()+"' ");
sql.append(", p.address='"+patient.getAddress()+"' ");
sql.append(" , p.age="+patient.getAge()+" ");
sql.append(" , p.phone='"+patient.getPhone()+"' ");
sql.append(", p.sex='"+patient.getSex()+"' ");
sql.append(" ,p.sickbed_id= "+patient.getSickbed().getId()+" ");
sql.append(" where id="+patient.getId());
try {
connection = getConnection();
PreparedStatement pStatement = connection.prepareStatement(sql.toString());
int res = pStatement.executeUpdate();
if (res > 0) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.yinger.patientims.model.Department;
public class DepartmentDAO extends DAOBase{
// private List departmentList = new ArrayList();
// private Department department;
// 得到所有的科室
public List<Department> getDepartmentList(){
Department department;
List<Department> list= new ArrayList<Department>();
Connection connection = null;
String sql = "select id,name from t_department";
try {
connection = getConnection();
PreparedStatement pStatement = connection.prepareStatement(sql);
ResultSet resultSet = pStatement.executeQuery();
while (resultSet.next()) {
department = setOneDepartment(resultSet);
list.add(department);
}
pStatement.close();
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
connection.close();// Quick Fix : Ctrl + 1
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
// 從數據庫中取出一條記錄並保存到一個Department中
private Department setOneDepartment(ResultSet resultSet)throws Exception {
Department department = new Department();
if(resultSet.getLong("id")!=0){
department.setId(resultSet.getLong("id"));
}
if(resultSet.getString("name")!=null){
department.setName(resultSet.getString("name"));
}
return department;
}
}