我正在用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
设置为UNIQUE
或PRIMARY
列,然后执行以下操作:INSERT INTO searchlog
(searchcolumn
,count
)VALUES(“ my search query”,0)ON重复键更新count
= count
+1;将完成您想要的。