2013-07-13 173 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