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); 
    } 
} 
Смежные вопросы