2016-05-30 2 views
0

Это мой код, который ничего не делает :). Он должен генерировать таблицу с назначенными и бесплатными назначениями. Моя база данных - это тест, имя таблицы - programari, имя столбца для даты - это данные, имя столбца для часа - имя ora и имя столбца для пользователя pacienti.JdateChooser и mysq.date не отображаются в таблице

private void refreshTable(){ 

String[] orar={"8:00","8:30","9:00","9:30","10:00","10:30","11:00","11:30","12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30","16:00","16:30","17:00","17:30","18:00","18:30","19:00","19:30","20:00","20:30","21:00","21:30","22:00"}; 

     DefaultTableModel model = new DefaultTableModel(); 

     model.setRowCount(0); 
     try { 

       for(int i =0;i<orar.length;i++){ 
        pst=conn.prepareStatement("select * from programari"); 
        rs=pst.executeQuery(); 
        if(rs.next()){ 
        if(rs.getDate("data").toString().equals(datap.getDate().toString())){ 
         if(rs.getString("ora").equals(orar[i])){ 
          model.addRow(new Object[]{orar[i],rs.getString("pacienti")}); 
         }else{ 
          model.addRow(new Object[]{orar[i],null}); 
         } 
        } 
        }else{ 
         model.addRow(new Object[]{orar[i],null}); 
        }         
    }     
     } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
     }   
    } 
+0

Date.toString не вернуть то, что вы ожидали – Jens

+0

пожалуйста, подробно им еще Верри новый для Java –

+0

Читать о SimpleDateFormat – Jens

ответ

0

Несколько точек:

  1. Приготовьте заявление вне петель.
  2. Использование, например. JodaTime: http://www.joda.org/joda-time/
  3. Рассмотрите возможность использования подготовленных параметров инструкции.
  4. Рассмотрите возможность использования столбца data_y_ora (или что-то в этом роде) типа DATETIME вместо данных и ora.
  5. Используйте цикл для инициализации часов.

Ниже приведен пример использования JodaTime, столбец data_y_ora типа DATETIME в таблице базы данных и подготовленных параметров инструкции:

private void refreshTable() { 
    // this is the "base" date 
    final DateTime data = new DateTime(datap.getDate()); 
    // here a List is used instead of an array 
    final List<DateTime> orar = new ArrayList<DateTime>(); 
    // set up the dates/times you want to query 
    for (int hour = 8; hour <= 22; hour++) { 
     orar.add(data.withTime(hour, 0, 0, 0); 
     orar.add(data.withTime(hour, 30, 0, 0); 
    } 
    final DefaultTableModel model = new DefaultTableModel(); 
    // create a database query with a parameter 
    final PreparedStatement pst = conn.prepareStatement("select * from programari where data_y_ora = ?"); 

    model.setRowCount(0); 
    try { 
     // iterate over the dates/times 
     for (DateTime ora : orar) { 
      // set the query parameter 
      pst.setDate(1, ora.toDate()); 
      // execute the query 
      rs = pst.executeQuery(); 
      if (rs.next()) { 
       // if a record has been found 
       model.addRow(new Object[] { ora, rs.getString("pacienti") }); 
      } else { 
       // no record has been found 
       model.addRow(new Object[] { ora, null }); 
      } 
     } 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
    } 
} 

Обратите внимание, что строки теперь есть экземпляр DateTime вместо строки как первый элемент.