Java )设置查询参数的方法。感谢您的输入,但我没有像我在对Tomer Shemesh的评论中所说的那样发布完整的帖子。因此,partnerID很遗憾确实发生了变化。@UsefulUserName编辑很高兴地处理了这个问题:-)好的,再次感谢;)但是当我使用您的代
Java )设置查询参数的方法。感谢您的输入,但我没有像我在对Tomer Shemesh的评论中所说的那样发布完整的帖子。因此,partnerID很遗憾确实发生了变化。@UsefulUserName编辑很高兴地处理了这个问题:-)好的,再次感谢;)但是当我使用您的代,java,sqlite,jdbc,Java,Sqlite,Jdbc,)设置查询参数的方法。感谢您的输入,但我没有像我在对Tomer Shemesh的评论中所说的那样发布完整的帖子。因此,partnerID很遗憾确实发生了变化。@UsefulUserName编辑很高兴地处理了这个问题:-)好的,再次感谢;)但是当我使用您的代码时,我在int-idColumn=rs.findColumn(“ID”)行上得到java.sql.SQLException:ResultSet-closedJDBC是否会在执行批处理时自动关闭结果集?@UsefulUserName在同一连接上
)设置查询参数的方法。感谢您的输入,但我没有像我在对Tomer Shemesh的评论中所说的那样发布完整的帖子。因此,
partnerID
很遗憾确实发生了变化。@UsefulUserName编辑很高兴地处理了这个问题:-)好的,再次感谢;)但是当我使用您的代码时,我在int-idColumn=rs.findColumn(“ID”)行上得到java.sql.SQLException:ResultSet-closed
代码>JDBC是否会在执行批处理时自动关闭结果集?@UsefulUserName在同一连接上生成新语句时,sqlite的JDBC实现似乎会关闭结果集。您可以重写它,以在单独的循环中获取父ID,并在运行时将它们与键配对。然后遍历这些对,将它们添加到批处理中,并在最后调用executeBatch()
。感谢您的输入,但我没有像我在对Tomer Shemesh的评论中所说的那样发布完整的帖子。因此,partnerID
很遗憾确实发生了变化。@UsefulUserName编辑很高兴地处理了这个问题:-)好的,再次感谢;)但是当我使用您的代码时,我在int-idColumn=rs.findColumn(“ID”)行上得到java.sql.SQLException:ResultSet-closed
代码>JDBC是否会在执行批处理时自动关闭结果集?@UsefulUserName在同一连接上生成新语句时,sqlite的JDBC实现似乎会关闭结果集。您可以重写它,以在单独的循环中获取父ID,并在运行时将它们与键配对。然后遍历这些对,将它们添加到批处理中,并在最后调用executeBatch()
。为了使用WHERE ID In子句,请确保您的ID被分成999或1000个批处理,因为oracle在子句中有接受1000个元素的限制,所以我发布的代码不完整。在删除一些杂乱内容(System.out.println等)的同时,我还意外地删除了rs.next()
。我想说的是,partnerID
确实发生了变化。或者至少应该这样做。为了使用WHERE ID In子句,请确保您的ID被分成999或1000个批次,因为oracle在第条中有接受1000个元素的限制,我发布的代码不完整。在删除一些杂乱内容(System.out.println等)的同时,我还意外地删除了rs.next()
。我想说的是,partnerID
确实发生了变化。或者至少应该这样。
public static void partnerStmt(ArrayList<Integer> keys, int age, int sex, int variable){
int amount = keys.size();
int ageMin = age - variable;
int ageMax = age + variable;
if (ageMin < 18)
ageMin = 18;
String select = "SELECT ID FROM individuen WHERE Jahre BETWEEN "
+ ageMin +" AND "+ ageMax + " AND family IS 2 AND married IS NULL AND Sex "
+ "IS " + sex + " ORDER BY RANDOM() LIMIT " +amount+";";
try {
Statement stmt = DBController.connection.createStatement();
ResultSet rs = stmt.executeQuery(select);
for (int i = 0; i < keys.size(); i++) {
int key = keys.get(i);
int idColumn = rs.findColumn("ID");
int partnerID = rs.getInt(idColumn);
PreparedStatement person = DBController.connection
.prepareStatement("UPDATE individuen set Partner = " + partnerID +
" WHERE ID = " + key);
person.executeUpdate();
rs.next()
}
} catch (SQLException e) {
e.printStackTrace();
}
}
"UPDATE individuen set Partner = " + partnerID + " WHERE ID IN (1,2,3,4)"
int idColumn = rs.findColumn("ID");
int partnerID = rs.getInt(idColumn);
PreparedStatement person = DBController.connection.prepareStatement(
"UPDATE individuen set Partner = ? WHERE ID = ?"
);
int idColumn = rs.findColumn("ID");
for (Integer key : keys) {
if (!rs.next()) {
// Make sure that we do not read a missing parent ID.
// This should never happen, as long as rs has enough rows.
break;
}
person.setInt(1, rs.getInt(idColumn));
person.setInt(2, key);
person.addBatch();
}
person.executeBatch();
public static void partnerStmt(ArrayList<Integer> keys, int age, int sex, int range){
int amount = keys.size();
int aageMin = alter - range;
int ageMax = alter + range;
int[][] storeArr = new int[amount][2];
if (ageMin < 18)
ageMin = 18;
String select = "SELECT ID FROM individuen WHERE Age BETWEEN "
+ ageMin +" AND "+ ageMax + " AND Family IS 2 AND Partner IS NULL AND Sex "
+ "IS " + sex + " ORDER BY RANDOM() LIMIT " +amount+";";
try {
Statement stmt = DBController.connection.createStatement();
ResultSet rs = stmt.executeQuery(select);
for (int i = 0; i < anzahl; i++){
int idColumn = rs.findColumn("ID");
int idPartner = rs.getInt(idColumn);
storeArr[i][0] = keys.get(i);
storeArr[i][1] = idPartner;
rs.next();
}
PreparedStatement person = DBController.connection.prepareStatement(
"UPDATE individuen set Partner = ? WHERE ID = ?");
for (int i = 0; i < amount; i++){
person.setInt(1, storeArr[i][0]);
person.setInt(2, storeArr[i][1]);
person.addBatch();
}
person.executeBatch();
} catch (SQLException e) {
e.printStackTrace();
}
}