Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 名称已由现有对象使用_Java_Sql_Oracle_Database Metadata_Ora 00955 - Fatal编程技术网

Java 名称已由现有对象使用

Java 名称已由现有对象使用,java,sql,oracle,database-metadata,ora-00955,Java,Sql,Oracle,Database Metadata,Ora 00955,在这段代码中,我试图在每次运行程序时删除已经存在的表,但是控件没有进入if语句中表1和表2。我已经在我的数据库里查过了。由于它没有出现在if语句中,因此在我尝试创建表时,它在最后一行给出了以下错误:ORA-00955:name已被现有对象使用。我做错了什么 Statement statement = connection.createStatement(); DatabaseMetaData md = connection.getMetaData(); String[]

在这段代码中,我试图在每次运行程序时删除已经存在的表,但是控件没有进入
if
语句中<数据库中存在代码>表1和
表2
。我已经在我的数据库里查过了。由于它没有出现在
if
语句中,因此在我尝试创建表时,它在最后一行给出了以下错误:
ORA-00955:name已被现有对象使用。我做错了什么

    Statement statement = connection.createStatement();
    DatabaseMetaData md = connection.getMetaData(); 
    String[] types = {"TABLE"};
    ResultSet rs1 = md.getTables(null, null, "table1",types );
    if (rs1.next()) {
        System.out.println(rs1.getString(3));
        statement.executeUpdate("drop table table1");
    }
    rs1.close();

    ResultSet rs2 = md.getTables(null, null, "table2", types);
    if (rs2.next()) {
        statement.executeUpdate("drop table table2");
    }
    rs2.close();
    statement.executeUpdate("create table table1(" +.....

如果表
table1
table2
是由上面的程序创建的,那么它们的名称将由Oracle大写。试一试

    ResultSet rs1 = md.getTables(null, null, "TABLE1", types);
(同样,对于
表2

或者,如果希望创建的表的名称中使用小写字母,请将其名称用双引号括起来,即

    statement.executeUpdate("create table \"table1\" (....)");

我会换这条线

ResultSet rs1 = md.getTables(null, null, "table1",types );
用这个

ResultSet rs1 = md.getTables(null, null, "TABLE1",types );