我正在用Java构建决策支持系统。以下是代码的一部分,该代码扫描用户键入的搜索词,然后将其与数据库searchlog.searchcolumn值进行比较,如果该词不存在,则会创建一个新条目。但是在if语句中,我希望它检查条目,并且如果它已经在searchlog.searchcolumn列中,那么我希望它不创建新的重复条目,而是将+1值添加到searchlog.counter列中特定字词。
例如,如果搜索词是“ UMBRELLA”,并且数据库中已经有一个伞的条目,我希望它向UMBRELLA行中的计数器列添加+1。

这样做的目的是存储所有搜索词并跟踪最受欢迎的词。
感谢您的时间
        字符串CheckSearch =“ SELECTsearchcolumn FROMsearchlog”;

String InsertColumn = "INSERT INTO `mydb`.`searchlog` (`searchcolumn`) VALUES ('"+ InputScanner + "');
         //
if (InputScanner.equals(CheckSearch))
   System.out.println("value ealready exist, counter well be updated");
else
   stmt.executeUpdate(InsertColumn);


编辑
感谢您提供有关使用PreparedStatement的建议,但这是我遇到的第一个严重挑战,而现在,让我们忽略我的代码漏洞。谢谢

最佳答案

您正在使用什么数据库?如果使用的是MySQL,则应查看INSERT ... ON DUPLICATE KEY UPDATE语句。 (其他SQL数据库具有MERGE,我对此不太熟悉。)这是MySQL Documentation

您需要将searchcolumn设置为UNIQUEPRIMARY列,然后执行以下操作:INSERT INTO searchlogsearchcolumncount)VALUES(“ my search query”,0)ON重复键更新count = count +1;将完成您想要的。

09-30 12:25