如何在Java中创建一个在Oracle数据库中创建表和修改数据并具有多种用途的程序

如何在Java中创建一个在Oracle数据库中创建表和修改数据并具有多种用途的程序,java,oracle,jdbc,create-table,Java,Oracle,Jdbc,Create Table,正如标题所示。我想创建一个java程序,在这个程序中,我将能够使用OracleBase/JDBC创建表和修改数据,并且我希望它有多种用途。可悲的是,当我在谷歌上搜索“oracle创建表”时,只有一些程序在一次使用后就没用了 现在我尝试了类似的方法,但它不起作用,因为程序说表不存在 try{ boolean tableExists; Statement statement = createStatement(); String sql1 = "SELECT * FROM t

正如标题所示。我想创建一个java程序,在这个程序中,我将能够使用OracleBase/JDBC创建表和修改数据,并且我希望它有多种用途。可悲的是,当我在谷歌上搜索“oracle创建表”时,只有一些程序在一次使用后就没用了

现在我尝试了类似的方法,但它不起作用,因为程序说表不存在

try{
    boolean tableExists;
    Statement statement = createStatement();
    String sql1 = "SELECT * FROM tableName";

    While(statement.execute(sql1)){
        tableExists = true;
        break;
    }

    while(tableExists= false){
        String sql2 = "CREATE TABLE tableName(id integer not null, name char(10) not null)";
        statement.execute(sql2);
        tableExists = true;
        break;
    }
} catch (Exception e) {
    e.printStackTrace();
    return;
}

首先,您不必使用
,而
语句基本上是
if
的情况

其次,您的代码有Java语法级别的问题,比如语句,
while(tableExists=false)
,所以您似乎对Java也是新手

第三,若表不存在,您的第一个调用
语句.execute(sql1)
将抛出一个
异常
,控件将直接转到catch块&您的第二个语句将不会执行。因此,我将修改您的代码如下

另外,请注意,第二个查询需要是
executeUpdate
&而不是
execute
…请参阅


请注意,这仍然不是一个很好的防愚代码,因为控件也可以去捕捉其他错误的块&不仅仅是表存在问题。表不存在是引发异常的众多原因之一&您可能需要检查跟踪消息,以确切了解表不存在是否是真正的问题,或者可以使用类似的方法
存在
在SQL中,仅当表不存在时才尝试创建表

看起来您的逻辑不正确,而(tableExists=false)您最好使用内置的jdbc元数据函数-声明时
tableExists
有什么值?首先初始化变量
boolean tableExists=false
并更改
while(!tableExists){此处的逻辑…}
try{
    boolean tableExists = false;
    Statement statement = createStatement();
    String sql1 = "SELECT * FROM tableName";
    if(statement.execute(sql1)){
        tableExists = true;
    }

    // do other things 

    return ;

} catch (Exception e) {
    e.printStackTrace();
    if(!tableExists){
        String sql2 = "CREATE TABLE tableName(id integer not null, name char(10) not null)";
        statement.executeUpdate(sql2);
        tableExists = true;
    }
    return;
}