【发布时间】:2015-12-19 16:01:10
【问题描述】:
我正在尝试插入没有重复的表格。我在 Java 中使用 SQL derbyclient。代码不起作用('where not exists' 出错)。有什么想法吗?
Connection connection = DriverManager.getConnection("jdbc:derby://localhost:1527/PetroleumDataStorageSystemDB;create=true");
PreparedStatement statement;
int i = 1;
int progress = 0;
for (Refuel refuelList1 : refuelList) {
progress = (i / refuelList.size()) * 100;
String sql = "INSERT INTO refuel (id_tank, time, fuel_volume, "
+ "refueling_speed) VALUES (?,?,?,?) "
+ "WHERE NOT EXISTS (SELECT * FROM refuel WHERE "
+ "id_tank = ? AND time = ? AND fuel_volume = ? AND "
+ "refueling_speed = ?)";
statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
statement.setInt(1, refuelList1.getTankID());
statement.setString(2, refuelList1.getTime());
statement.setDouble(3, refuelList1.getFuelVolume());
statement.setDouble(4, refuelList1.getRefuelingSpeed());
statement.execute();
i++;
}
【问题讨论】:
-
我认为 ID 是唯一的?如果是这种情况,那么将其从您不存在的地方删除,因为它会有所不同?
-
玻璃鱼。该表没有主键。
-
插入 + where 不正确。请改用插入 + 选择。
标签: java sql derby insert-into no-duplicates