在我的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.:该类的完整代码如下:livre/blob/master/src/com/horariolivre/service/InstallService.java
发布于 2014-05-10 15:20:57
变量结果总是接收值0,这是导致if中代码不执行的原因。
来自Statement#executeUpdate javadoc:
返回: (1) (DML)语句的行计数,或(2) 0表示不返回任何的SQL语句。
在您的示例中,您正在执行一个DDL语句,该语句不返回任何内容,因此您的输出将始终为0。这并不意味着语句没有被执行,而是底层实现应该如何运行(而且它是可以的)。
顺便说一句,在JDBC中,您不应该在SQL语句中附加分号,所以在语句末尾移除分号:
//no semicolon at the end
int result = stmt.executeUpdate("CREATE DATABASE horario WITH OWNER "+ usuario);https://stackoverflow.com/questions/23582761
复制相似问题