2015-11-26 2 views
-1

this is my shape of database, как перейти от одного ряда к другому

я настроил мой LabelText на «содержание T26». Затем я хочу изменить содержимое labelTEXT на «содержимое T30», нажав кнопку «Да» (ps: T26 имеет значение T30 IF_YES). Когда я снова нажму кнопку «Да», содержимое labelTEXT должно измениться на содержимое T25. как это сделать?

private void btYesActionPerformed(java.awt.event.ActionEvent evt) {          
    Connection conn = connectionClass.GetConnections(); 
    Statement st; 
    ResultSet rs; 
    String task; 
    task = "T26"; 
    try { 
     st = conn.createStatement(); 
     rs = st.executeQuery("select * FROM task where ID = '"+task+"'"); 
     while (rs.next()) { 
      String TEXT = rs.getString("TEXT"); 
      String IF_YES = rs.getString("IF_YES"); 
      labelTEXT.setText(TEXT); 
      task = IF_YES; 
     } 
    } catch (Exception e) { 
    } 
} 

надеюсь, что это достаточно ясно

+1

Непонятно, что вы просите. –

+0

Я пытаюсь его отредактировать. спасибо –

+0

Вы делаете это не с помощью hardcoding '' T26 "', а вместо этого создавайте 'task' поле экземпляра, инициализированное' 'T26" '. Вы также должны изменить код для использования 'PreparedStatement', изменить SQL на' select * FROM task, где ID =? ', И вызвать' stmt.setString (1, task) '. – Andreas

ответ

0

Вы бы запросить снова для строки, соответствующей новым идентификатором на основании того, что нажал пользователь.

Редактировать: Посмотрите подготовленные заявления, поскольку они являются безопасным способом делать вещи http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html.

Основываясь на существующем коде, он должен сделать что-то вроде следующего для запросов. Логика потока пользовательского интерфейса и управления должны быть заполнены:

private void btYesActionPerformed(java.awt.event.ActionEvent evt) {          
    Connection conn = connectionClass.GetConnections(); 
    boolean done = false; 
    PreparedStatement pst; 
    ResultSet rs; 
    String task; 
    task = "T26"; // Set initial value of task 
    // Assuming one row expected (may want to handle error case later) 
    query = "SELECT * FROM task WHERE ID = ? LIMIT 1" 

    try { 
     pst = conn.prepareStatement(query); 

     while (!done) { 
      pst.setString(1, task) 
      rs = pst.executeQuery() 
      while (rs.next()) { 
       String TEXT = rs.getString("TEXT"); 
       String IF_YES = rs.getString("IF_YES"); 
       labelTEXT.setText(TEXT); 
       task = IF_YES; // Task is now updated for the next loop 
      } 
      // TODO: Make sure to set done to false when all tasks complete. 
     } 

     pst.close() 
     conn.close() 
    } catch (Exception e) { 
    } 
} 

Примечание: Вы также можете посмотреть в создание нескольких запросов в транзакции при необходимости https://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html.

+0

да, что я имею в виду –

+0

Я отредактировал свой ответ, чтобы показать пример. – sdsmith

+1

Благодарим вас за ответ. это действительно работает :) –

Смежные вопросы