用于创建数据库返回错误值的代码

时间:2014-05-10 15:16:48

标签: java jdbc

在我的spring项目中,我有这个代码来创建应用程序将使用的数据库:

        int result = stmt.executeUpdate("CREATE DATABASE horario WITH OWNER "+usuario+";");
        System.out.println("result = "+result);
        if(result > 0) {
            System.out.println("calling_create_tables");
            create_tables(maquina, usuario, senha);
            rs.close();
            stmt.close();
            conn.close();
            return true;
        }

问题是,尽管正常创建了数据库,但变量结果总是接收值0,导致if中不执行代码的原因。

有谁知道为什么会这样?

ps:该类的完整代码是:https://github.com/klebermo/webapp_horario_livre/blob/master/src/com/horariolivre/service/InstallService.java

1 个答案:

答案 0 :(得分:0)

  

变量结果总是接收值0,导致在if。

中不执行代码的原因

来自Statement#executeUpdate javadoc:

  

退货:
  (1)SQL数据操作语言(DML)语句的行数或(2) 0表示不返回任何内容的SQL语句

在您的情况下,您正在执行一个不返回任何内容的DDL语句,因此您的输出将始终为0.这并不意味着语句没有被执行,而是底层实现应该如何表现(并且没关系。)

顺便说一下,在JDBC中,你不应该在你的SQL语句中附加分号,所以删除语句末尾的分号:

//no semicolon at the end
int result = stmt.executeUpdate("CREATE DATABASE horario WITH OWNER "+ usuario);