gpt4 book ai didi

java - 使用 Java,用数组中的值更新每行中的列的最佳方法是什么? (SQLite)

转载 作者:行者123 更新时间:2023-12-02 05:12:40 25 4
gpt4 key购买 nike

今天是我第一天使用 SQLite。我正在使用 Java 与 SQLite 数据库交互,该数据库包含名为 ID、NAME、CITY 的字段。我想获取数据库中的每条记录,并将 CITY 字段替换为数组中的值。这是我尝试过的,但立即意识到这是错误的。我相信该查询将每条记录替换 3 次,结果是每个 CITY 字段都是“Compton”。我不确定什么是好的或有效的方法来做到这一点。

public void update(String cities[]) throws SQLException {

PreparedStatement updateCity = null;
Connection con = null;
String updateString = "update SUPPLIERS set CITY = ?";

try {

Class.forName("org.sqlite.JDBC");
con = DriverManager.getConnection("jdbc:sqlite:suppliers.db);
con.setAutoCommit(false);
updateCity = con.prepareStatement(updateString);

for (int i = 0; i < cities.length; i++) {
updateCity.setString(1, cities[i]);
updateCity.executeUpdate();
con.commit();
}
} catch (Exception e) {

e.printStackTrace();

if (con != null) {

try {

System.err.print("Transaction is being rolled back");
con.rollback();

} catch (SQLException excep) {

excep.printStackTrace();
}
}

} finally {
if (updateCity != null) {

updateCity.close();
}

con.setAutoCommit(true);

con.close();
}
}

我像这样调用该方法 instance.update(new String[]{"san diego", "losangeles", "Compton"});。我想知道如果可能的话如何使用PreparedStatement 来做到这一点,但如果这不是最好的方法,请发布替代建议。

注意:这不是我的代码,它是取自SQLite Java Tutorials的代码.

最佳答案

您的更新语句将在每次调用时更新表中的所有记录。如果您希望该语句一次只更新一条记录,则需要将更新语句更改为如下所示:

update SUPPLIERS set CITY = ? where ID = ?

如果您想要更新所有记录,则需要执行查询来获取所有 ID。像这样的查询应该有效:

select ID from SUPPLIERS

然后,对于返回的每个 ID,使用该 ID 以及您希望更新记录的城市调用更新语句。

关于java - 使用 Java,用数组中的值更新每行中的列的最佳方法是什么? (SQLite),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208805/

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