2013-07-13 2 views
0

Я попытался исследовать эту проблему, однако я не могу найти решение. Фон: У меня есть небольшая программа java, использующая sqlite как его DB. Я пытаюсь обновить счетчик строк, чтобы отслеживать, сколько раз выполняется поиск кода, или сколько раз отображается строка. (Если строка не отображается, она не будет считаться). Моя таблица базы данных Hase три столбца {коды, описание, ITEMCOUNT}Объяснение Операция Select and Update

Вот код, который я использовал, чтобы получить подряд

 private void SrchCodeActionPerformed(java.awt.event.ActionEventevt)    {           
    String sql = "SELECT * FROM emdcodes WHERE Codes like ?"; // SQL command 

try {ps = conn.prepareStatement(sql); 

ps.setString(1, EMDCODELOOKUP.getText() + "%");   
rs = ps.executeQuery(); 
ResultsTable.setModel(DbUtils.resultSetToTableModel(rs)); 
} catch (Exception e) { 
     JOptionPane.showMessageDialog(null, e); 
    } }         

Я использую этот SQL-код на сайте версию, и она работает. он написан на PHP.

$sqlcount = mysql_query("update emdcodes SET ItemCount = ItemCount +1 Where  Codes  like '$term%'"); 

Мой вопрос: где и как добавить код счетчика в java-прогам. Целью счетчика является поддержание списка из пяти найденных элементов.

Благодарю любого за помощь.

+0

Я предлагаю вам создать процедуру для этого, это лучше, потому что у вас есть только один вызов с db, в то время как вы приближаетесь, речь идет о двух вызовах (выберите и обновить), процедура, которая подсчитывает один и возвращает значение –

+0

Благодарю вас за ваше предложение. Если я могу спросить, не могли бы вы привести пример или направить меня туда, где я мог бы узнать для себя. Спасибо – user2326872

ответ

0

Я не уверен, что это именно то, что вы ищете ...

private void SrchCodeActionPerformed(java.awt.event.ActionEventevt)    { 
     if (counter <= 5) {        
     String sql = "SELECT * FROM emdcodes WHERE Codes like ?"; // SQL command 

     try {ps = conn.prepareStatement(sql); 

     ps.setString(1, EMDCODELOOKUP.getText() + "%");   
     rs = ps.executeQuery(); 
     if (rs.first()){ 
      counter++; 
     } 
     ResultsTable.setModel(DbUtils.resultSetToTableModel(rs)); 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, e); 
     }  
    } 
}  

first() -> перемещает курсор на первую строку в этом ResultSet объект. Возвращает: true, если курсор находится в допустимой строке; false, если в результирующем наборе нет строк

+0

Спасибо за ваше предложение. Я пытаюсь обновить запись столбца в таблице, которая имеет этот код: моя таблица имеет три столбца, коды - описания - ItemCount. Когда пользователь ищет код 1, программа jave деактивирует свое соответствующее описание и СЛЕДУЕТ увеличивать ItemCount на единицу. Например, для поиска кода для кода 1 три раза и кода 6 в два раза столбца ItemCount рядом с строкой с кодом 1 теперь будет 3, а ItemCount для кода будет 2. – user2326872

+0

. Я также думал о объединении SQL QUERY с включите записи SELECT и UPDATE в одном QUERY – user2326872

+0

OK здесь больше кода Im Tring private void SrchCodeActionPerformed (java.awt.event.ActionEvent evt) { Строка sql = "SELECT * FROM emdcodes WHERE Codes like?"; try {ps = conn.prepareStatement (sql); ps.setString (1, EMDCODELOOKUP.getText() + "%"); rs = ps.executeQuery(); ResultsTable.setModel (DbUtils.resultSetToTableModel (rs)); ps.executeUpdate («обновить набор emdcodes ItemCount = ItemCount + 1, где коды похожи?»); } catch (Исключение e) {JOptionPane.showMessageDialog (null, e); }} – user2326872