2014-01-27 2 views
0

여러 테이블에서 검색하려고하지만 사용자가 모든 입력을 제공하지 않습니다. 예를 들어 사용자가 이름을 검색하기를 원하지 않는다면 무시하면서 모든 정보를 검색하려고합니다. 다음 코드를 시도했지만 모든 문자열이 제공되지 않으면 작동하지 않습니다. 그것을 무시하고 사용자가 제공 한 정보로 검색을 계속할 수있는 방법이 있습니까?Java MYSQL, 빈 문자열 무시 중에 검색

public void BuscarCita(String aiDee, String namey, String lastNamey,String date, String horay, String miny) { 
    try{ 
    String query=("SELECT citas.FECHA,citas.HORA,citas.MIN,citas.NOMBRE,citas.APELLIDO,citas.ID,citas.MOTIVO,user.TELEFONO,user.COMENTARIO " 
       + "from dentista.citas, dentista.user WHERE citas.FECHA='"+date+"'"+"AND user.ID='" + aiDee+"'"+"AND citas.NOMBRE='" + namey+"'"+"AND citas.APELLIDO='" + 
       lastNamey+"'"+"AND citas.HORA='" + horay+"'"+"AND citas.MIN='" + miny+"'"+"AND citas.ID='" + aiDee+"'"); 
    Statement st=conn.createStatement(); 
    ResultSet rs=st.executeQuery(query); 
    Object[] rows=null; 
    while(rs.next()){ 
     String nomme=rs.getString("NOMBRE"); 
     String lnomme=rs.getString("APELLIDO"); 
     String datey=rs.getString("FECHA"); 
     String timeyH=rs.getString("HORA"); 
     String timeyM=rs.getString("MIN"); 
     String ID=rs.getString("ID"); 
     String reason=rs.getString("MOTIVO"); 
     String tel=rs.getString("TELEFONO"); 
     String comment=rs.getString("COMENTARIO");  
       rows=new Object[]{datey,timeyH+":"+timeyM,nomme +" "+ lnomme, tel, reason,comment}; 
       MainWindow.mainTableModel.addRow(rows); 
    } 



    }catch(Exception ex){ 
     System.out.println(ex); 
    } 
} 
+0

답변을 확인하십시오. 원하는 경우 문제를 해결 된 것으로 표시하십시오. –

답변

0

당신은 다음과 같은 몇 가지 일을 수행 할 수 있습니다

String query =" Select * from table where "; 
if (!name.isEmpty()){ 
query+= "where name='"+name+"'";} 
if (!lastName.isEmpty()){ 
query+= "AND lastName='"+lastName+"'"; 
} 
... 

다음 당신은 당신의 쿼리

0

당신은 내 코드를 다시 시도 할 수 있습니다를 실행합니다.

public String trim(String input) { 
    if(input == null || input.trim().length()<1) { 
     return "%"; 
    } else { 
     return input.trim(); 
    } 
} 

public void BuscarCita(String aiDee, String namey, String lastNamey, 
     String date, String horay, String miny) { 
    try { 
     String query = "SELECT citas.FECHA,citas.HORA,citas.MIN,citas.NOMBRE,citas.APELLIDO,citas.ID,citas.MOTIVO,user.TELEFONO,user.COMENTARIO " 
       + "FROM dentista.citas, dentista.user " 
       + "WHERE citas.FECHA= ? AND user.ID= ? AND citas.NOMBRE= ? AND citas.APELLIDO= ? AND citas.HORA= ? AND citas.MIN= ? AND citas.ID=?"; 
     PreparedStatement st = conn.prepareStatement(query); 
     st.setString(1, trim(date)); 
     st.setString(2, trim(aiDee)); 
     st.setString(3, trim(namey)); 
     st.setString(4, trim(lastNamey)); 
     st.setString(5, trim(horay)); 
     st.setString(6, trim(miny)); 
     st.setString(7, trim(aiDee)); 

     ResultSet rs = st.executeQuery(query); 
     Object[] rows = null; 
     while (rs.next()) { 
      String nomme = rs.getString("NOMBRE"); 
      String lnomme = rs.getString("APELLIDO"); 
      String datey = rs.getString("FECHA"); 
      String timeyH = rs.getString("HORA"); 
      String timeyM = rs.getString("MIN"); 
      String ID = rs.getString("ID"); 
      String reason = rs.getString("MOTIVO"); 
      String tel = rs.getString("TELEFONO"); 
      String comment = rs.getString("COMENTARIO"); 
      rows = new Object[] { datey, timeyH + ":" + timeyM, 
        nomme + " " + lnomme, tel, reason, comment }; 
      MainWindow.mainTableModel.addRow(rows); 
     } 

    } catch (Exception ex) { 
     System.out.println(ex); 
    } 
}