Java sql如何插入executeBatch()以返回布尔值
假设我们有一个Person类,该类具有与以下属性相关的setter和getter:Java sql如何插入executeBatch()以返回布尔值,java,mysql,sql,sql-insert,bulkinsert,Java,Mysql,Sql,Sql Insert,Bulkinsert,假设我们有一个Person类,该类具有与以下属性相关的setter和getter: private int age private String name private String address private double weight //lbs private double height //cm 然后是一份清单: Person person1 = new Person(18, "Jack Harrs", "55 Albridge St",
private int age
private String name
private String address
private double weight //lbs
private double height //cm
然后是一份清单:
Person person1 = new Person(18, "Jack Harrs", "55 Albridge St", 155.20, 167.53)
Person person2 = new Person(53, "Toby Canes", "59 Albridge St", 193.43, 179.11)
Person person3 = new Person(24, "Dwayne Right", "74 W Saint St", 183.22, 183.87)
Person person4 = new Person(33, "Shelby Johnson", "99 Broad St", 123.50, 158.30)
List<Person> personsList = new ArrayList<>();
personsList.add(person1);
personsList.add(person2);
personsList.add(person3);
personsList.add(person4);
因此,
int[]results
看起来像[1,1,…],其中1表示成功,x其他数字表示失败。但是,我想根据操作是否成功返回true或false。我尝试在最后执行返回true
,而不是初始化int[]
数组,但是我不知道如何解释代码中出现返回false
的情况?听起来像是应该使用结果来确定所有批处理语句是否成功。例如:
...
int[] results = stmt.executeBatch();
return isSuccess(results);
}
private void isSuccess(int[] batchUpdateResults) {
Arrays.stream(batchUpdateResults).allMatch(updateCount -> updateCount == 1);
}
请注意,这要求所有批处理语句都更新了一条记录。如果任何批处理语句返回除1以外的任何内容,则将返回false。因此,成功的定义可能需要澄清
此外,从示例代码中还不清楚如果抛出异常会发生什么。是否会在方法中捕获异常并返回false?您可以尝试以下方法:
try {
stmt.executeBatch();
return true;
} catch (SQLException e) {
return false;
}
executeBatch()
仅当批处理中的所有命令都成功时才会返回int[]
,否则会抛出SQLException
或BatchUpdateException
(SQLException
的子类)
你不能。它是一个已定义的接口。如果手术没有“成功”,那意味着什么?引发了异常?mysql数据库的值not=1的通常定义是什么?我不确定您在问什么,但results
的每个元素都指示该特定查询的更新计数。
try {
stmt.executeBatch();
return true;
} catch (SQLException e) {
return false;
}