2013-07-13 113 views
0

我試圖研究這個問題,但我找不到解決方案。 背景:我有一個使用sqlite作爲其數據庫的小型java程序。我正在嘗試更新行計數器以跟蹤代碼的搜索次數或顯示行的次數。 (如果一行沒有顯示,則不會被計數)。我的數據庫表長谷三列{代碼,描述,ItemCount中}組合選擇和更新語句

下面是代碼,我用來獲取行

 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程序。該櫃檯的目的是維護搜索的前5個項目的列表。

我感謝任何人的幫助。

+0

我建議你創建過程來做到這一點,這樣做會更好,因爲你只需要使用db調用一次,而你的方法是談論兩個(select和update)調用,一個程序,計數一個並返回值 – 2013-07-13 19:33:43

+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

謝謝你的建議。我試圖更新表中具有該代碼的列條目:我的表有三列,代碼 - 說明 - 條目計數。當用戶搜索代碼1時,jave程序會取消其匹配的描述,並應該將ItemCount加1。例如,一個用法搜索代碼1三次,而代碼6的兩倍CodeCount的行旁邊的列ItemCount現在爲3,CodeCount for Code將爲2. – user2326872

+0

我也在考慮將SQL QUERY與在一個QUERY中包含SELECT和UPDATE語句 – user2326872

+0

OK這裏有更多代碼Im Tring private void SrchCodeActionPerformed(java.awt.event.ActionEvent evt)String sql =「SELECT * FROM emdcodes WHERE Codes like?」; 嘗試{ps = conn.prepareStatement(sql); ps.setString(1,EMDCODELOOKUP.getText()+「%」); rs = ps.executeQuery(); ResultsTable.setModel(DbUtils.resultSetToTableModel(rs)); ps.executeUpdate(「更新emdcodes設置ItemCount = ItemCount + 1其中Codes like?」); catch(Exception e){JOptionPane.showMessageDialog(null,e); }} – user2326872