想要为我的代码添加验证,如果表不存在,它应该在java中创建新表[duplicate]

问题描述 投票:0回答:2

这个问题在这里已有答案:

请不要将我的问题标记为重复我尝试了其他解决方案,但他们无法正常工作。我正在尝试进行验证,如果表不存在则创建。

void checkCreateMeth()
    {
        try{
        System.out.println("Implementing the functionality of create table if not exist or not.");
        Class.forName(JDBC_Driver);
        con=DriverManager.getConnection(DB_URL, user, pass);
        stmt=con.createStatement();
        String sql="CREATE TABLE IF NOT EXISTS VGRWER(name varchar(10),stream varchar(10))";
            int rs=stmt.executeUpdate(sql);
            System.out.println("Value of rs is="+rs);
        }catch(Exception e)
        {
            e.printStackTrace();                         
        }
    }
  1. 首先我使用了exexuteQuery()它给出了错误“无法使用executeQuery()发出数据操作语句”
  2. 其次,我尝试了executeUpdate(),当表存在时它返回“0”。当我提供不存在的table_name时,它返回相同的值。
java mysql jdbc javadb
2个回答
2
投票

来自javadocs:

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

https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String)

这意味着无论表是否存在,您的DDL语句总是返回0。


-1
投票

当您使用executeupdate创建表时,您没有执行INSERT或UPDATE,因此没有行受到影响而得到“0”

此链接可能有用: -

executeUpdate() returns zero despite correct execution

© www.soinside.com 2019 - 2024. All rights reserved.