Mysql中execute创建表返回值为什么false?

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);

猜你喜欢

转载自blog.csdn.net/weixin_44889894/article/details/112321603