我正在用 java 构建一个决策支持系统。下面是代码的一部分,它扫描用户输入的搜索词,然后将其与数据库 searchlog.searchcolumn 值进行比较,如果该词不存在,则创建一个新条目。但在 if 语句中,我希望它检查该条目,并且如果它已经在 searchlog.searchcolumn 列中,那么我希望它不创建新的重复条目,而是为 searchlog.counter 列添加 +1 值具体词。 例如,如果搜索词是“UMBRELLA”并且数据库中已经有一个雨伞条目,我希望它向 UMBRELLA 行中的计数器列添加 +1。
这样做的目的是存储所有搜索词并跟踪最流行的搜索词。 感谢您的时间 String CheckSearch = "从搜索日志中选择搜索列";
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 DUPLICATE KEY UPDATEcount
=count
+ 1;
关于java、mysql比较和编辑值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13753706/