在我的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中不执行代码的原因。
有谁知道为什么会这样?
答案 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);