gpt4 book ai didi

java - 通过java更新sql表中随机行中的值

转载 作者:行者123 更新时间:2023-12-01 10:02:23 24 4
gpt4 key购买 nike

Image of my table as it is when I start this program.

我拥有的是一个大部分为空的表,我正在尝试为固定数量的元素分配一个值。我要编辑的列是“Geschlecht”,我要编辑的行数是“copyMaen”(约 50.000 个条目)。我只想选择之前“Geschlecht”值为 NULL 的行,并且我想随机选择这些行。

我通过 JDBC 驱动程序使用 SQLite。

这是我第一次使用sql。这就是我尝试做的方法。

                try {
Statement stmt = DBController.connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT Geschlecht FROM individuen WHERE Geschlecht IS NULL;");
PreparedStatement ps = DBController.connection.prepareStatement("UPDATE individuen");
while (copyMaen != 0) {
if (rs.getRowId((int) (Math.random() * ReadCSV.sumBev)) == null) {
ps.setInt(2, 0);
ps.executeUpdate();
copyMaen--;
}
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}

显然这会给我带来错误,我不太确定如何从那里继续。有人能指出我正确的方向吗?

最佳答案

对于任何感兴趣的人来说,这就是解决方案:

try {
Statement stmt = DBController.connection.createStatement();
String select = "SELECT ID FROM individuen WHERE Geschlecht is NULL ORDER BY RANDOM()" +
" LIMIT " + Integer.toString(copyMaen);
ResultSet rs = stmt.executeQuery(select);
PreparedStatement ps = DBController.connection.prepareStatement("UPDATE individuen set Geschlecht = ? WHERE ID = ?;");
// rs.beforeFirst();
int count = 0;
while (rs.next()) {
ps.setInt(1, 0);
ps.setInt(2, rs.getInt(1));
ps.addBatch();
if (count%100==0) {
System.out.println(count);
}
count++;
}
DBController.connection.setAutoCommit(false);
ps.executeBatch();
DBController.connection.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
}
}

关于java - 通过java更新sql表中随机行中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36698180/

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