gpt4 book ai didi

java - 插入时删除重复值

转载 作者:行者123 更新时间:2023-11-30 09:40:41 26 4
gpt4 key购买 nike

您好,我正在尝试将 Excel 工作表中的值插入到 Java 中的 SQL 数据库中。 SQL 数据库已经通过一些其他技术插入了一些行。现在我需要从 Excel 工作表中插入新行,并且应该消除数据库和 Excel 工作表中存在的重复值。为此,我编写了一个这样的查询。

首先我使用插入查询将excelsheet中的记录插入到SQL数据库中

    Statement.executeUpdate(("INSERT INTO dbo.Company(CName,DateTimeCreated) values 
('"+Cname”' ,'"+ts+"');

后来我使用删除查询删除了重复的值。

      String comprows="delete from dbo.Company  where Id not in"
+ "(select min(Id) from dbo.Company "
+ "group by CName having count(*)>=1)";
statement3.executeUpdate(comprows);

其中 Id 是自动递增的整数。但是先插入再删除是不好的。我怎么知道这些值已经存在?如果存在,我该如何在插入过程中将其移除???

最佳答案

您可以先为 CName 触发一个 SELECT。如果找到记录,则更新,否则插入新记录。编辑添加代码片段:

ResultSet rs = Statement.query("SELECT Id from dbo.Company where CNAME = '" +Cname + "'");

if(rs.next()) {
// retrieve ID from rs
// fire an update for this ID
} else {
// insert a new record.
}

或者,如果您认为您的表中已经有重复项并且您也想删除它们......

ResultSet rs = Statement.query("SELECT Id from dbo.Company where CNAME = '"+Cname + "'");

List idList = new ArrayList();
while(rs.next()) {
// collect IDs from rs in a collection say idList
}
if(!isList.isempty()) {
//convert the list to a comma seperated string say idsStr
Statement.executeUpdate("DELETE FROM dbo.Company where id in ("+ idsStr + ")");
}
// insert a new record.
Statement.executeUpdate(("INSERT INTO dbo.Company(CName,DateTimeCreated) values('"+Cname”' ,'"+ts+"');

当然,好的做法是使用 PreparedStatement,因为它会提高性能。PS:如有语法错误请见谅。

关于java - 插入时删除重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com