Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sql如何插入executeBatch()以返回布尔值_Java_Mysql_Sql_Sql Insert_Bulkinsert - Fatal编程技术网

Java sql如何插入executeBatch()以返回布尔值

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",

假设我们有一个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", 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;
}