【发布时间】:2014-02-12 00:26:52
【问题描述】:
我有以下代码。我不确定如何安排它们,以便在将记录添加到 SQL 数据库之前检查 CSV 中的条目。 问题是我仍在向 sql 中添加双记录
try {
br = new BufferedReader(new FileReader(file));
String[] data1 = br.readLine().split(cvsSplitBy);
while ((line = br.readLine()) != null) {
String queryCheck = "SELECT Count(Name) from DB WHERE Name = ?";
PreparedStatement st = conn.prepareStatement(queryCheck);
//value is the data of the name column in the CSV
st.setString(1, data1[0]);
ResultSet rs = st.executeQuery();
boolean recordFound = rs.next();
if (recordFound) {
//dont add record
System.out.println("found " + data1[0]);
} else {
String[] data = line.split(cvsSplitBy);
String sql2 = "INSERT INTO DB (Name, ID, Age) values (?, ?, ?)";
pstmt = conn.prepareStatement(sql2);
pstmt.setString(1, data[0]);
pstmt.setString(2, data[1]);
pstmt.setString(3, data[2]);
pstmt.executeUpdate();
}
}
【问题讨论】:
-
将
while循环放入else -
即使我这样做了仍然添加双记录
-
您确定您在比较
name的正确值吗?您是如何从 csv 中检索到value的值的? -
好的,现在还有一个问题..找到记录时,它将跳过对其余条目的检查。因此发现后的所有内容都不会添加
-
添加 try/catch 块的其余部分...是否抛出任何异常。您还可以将代码更新为您现在的代码吗?