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