SQL语句中execute创建表后返回值为什么false?
先看遇到的问题:
这里执行sql语句,创建表,运行并没有报错,表明我们的代码是没有问题的,并且,在数据库中,student表也已经创建成功,更加说明我们的代码没问题,但是控制台输出的却是false,不是true
不知道原因是什么,所以我们有必要看下execute的源码。
摁住Ctrl,再点击execute
看到这里,我们发现,这里是一个借口,并不能看出什么东西
因此,我们应该想,他的实现类中会不会有说明
我们在摁住Ctrl+H,找到他的实现类
结果我们发现,这里依旧没有说明,但这里,我们已经没有思绪了,只好去找他的解释文档了
我们可以找到这句话,大概意思就是:
execute 方法返回一个 boolean 值,并没有返回结果,所以返回的是false,如果返回有结果则输出true。再联系我们创建表,我们只是在数据库中完成了表的创建,没有返回结果,所以为false。
到这里我们也终于搞懂了,着实有点不容易呀!
这里是我的代码,如果你想试试的话,可以研究一下哈!
private Connection con;
@Before //每次单元测试之前都会执行
public void init() throws Exception {
//2,注册驱动 Driver
Class.forName("com.mysql.cj.jdbc.Driver");
//3,DriverManager 获取连接数据库对象
String url="jdbc:mysql://localhost:3306/long ?useSSL=false&serverTimezone=UTC";
con = DriverManager.getConnection(url, "root", "123456");
}
@Test // dml--新增
public void test01() throws SQLException {
//1,定义sql
String sql="insert into account values(NULL,'关羽',1000)";
//2,获取执行sql的对象,Statement
Statement statement = con.createStatement();
//3,执行sql,并返回表格影响的行数
int i = statement.executeUpdate(sql);
System.out.println(i);
}
@Test // ddl--创建表
public void test02() throws SQLException {
//1,定义sql
String sql="CREATE TABLE student(id INT,NAME VARCHAR(20));";
//2,获取执行sql的对象,Statement
Statement statement = con.createStatement();
//3,执行sql,并返回表格影响的行数
boolean i = statement.execute(sql);
System.out.println(i);
}
account表的创建代码:
-- 创建账户表
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
balance DOUBLE
);
INSERT INTO account VALUES (NULL,'曹操',1000), (NULL,'刘备',1000);