SQL语句确定没问题,都是在数据库执行过粘过来的,全部查询有结果, 但是最后加上条件查询结果就是null,当然条件查询在sqlserver也执行有结果。 我认为是java中  sql语句有问题, 但是各种方法都试了还是不行,有没有遇到过这种情况的?
代码如下public PatientBean findPatientByInpatientNo(String inpatientNo) throws SQLException{

// System.out.println(inpatientNo+"h");  // 住院号从servlet传过来没问题
Connection conn = dbUtil.getConnection();
// System.out.println("conn:" + conn);  // 数据库链接没问题
String sql = "select a.inpatient_no,a.admiss_times,a.name,admiss_date,convert(varchar(10),a.birth_date,120) sr,a.clinic_doctor " +
"from zy_actpatient as a,zd_unit_code as b " + 
"where a.admiss_ward=b.code and " +
"right(a.patient_id,2)='00' and " +
"b.name like '%产%' and " +
"a.inpatient_no='"+ inpatientNo +"'";

PreparedStatement pstm = conn.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
PatientBean patient = new PatientBean();
while (rs.next()){

patient.setInpatientNo(rs.getString("inpatient_no"));
patient.setAdmiss_times(rs.getInt("admiss_times"));
patient.setName(rs.getString("name"));
patient.setAdmissDate(rs.getDate("admiss_date"));
patient.setSr(rs.getDate("sr"));
patient.setClinic_doctor(rs.getString("clinic_doctor"));
}

return patient;

}
把参数去掉直接输入一个限制条件,结果还是null
String sql = "select a.inpatient_no,a.admiss_times,a.name,admiss_date,convert(varchar(10),a.birth_date,120) sr,a.clinic_doctor " +
"from zy_actpatient as a,zd_unit_code as b " + 
"where a.admiss_ward=b.code and " +
"right(a.patient_id,2)='00' and " +
"b.name like '%产%' and " +
"a.inpatient_no='6060572'";请问:我sql语句格式错了吗?应该怎么写?

解决方案 »

  1.   

    String sql = "select a.inpatient_no,a.admiss_times,a.name,admiss_date,convert(varchar(10),a.birth_date,120) sr,a.clinic_doctor 这里的admiss_date是谁的?a的?还是b的?另外感觉你的后半段也不太对,可以的话把涉及到的表结构发上来看看
      

  2.   

     问题出在最后一个条件上  a.inpatient_no='6060572'"  我去掉这个条件实现的是全部查询, 全部查询这个测过没问题
      

  3.   

     a.inpatient_no这个数据的类型是number还是varchar?看你写的代码中写的varchar类型。
      

  4.   


    是varchar
      

  5.   

    convert(varchar(10),a.birth_date,120) 鄙视一下这个,到app服务器上转换不行吗,数据库服务器压力够大的了,这些简单的转换不要在数据库服务器做
      

  6.   

    把完整SQL打印出来看看有没有问题
      

  7.   

    代码太多了,既然你认为是SQL语句问题,那么用日志输出参数和最终的SQL语句,复制出来执行下
      

  8.   

    你这种直接输出一下SQL复制到数据库查询一下不就知道问题了么~
    既然你用preparestatement就不要这么拼参数
      

  9.   

    你直接输出下sql语句然后在管理工具直接用用试试
    前面住院号是inpatientNo+"h"
    到了sql里面怎么成了inpatientNo+""了?