Ava*_*Ava 5 java sql oracle database-metadata ora-00955
在这段代码中,我试图删除表,如果它们每次运行程序时已经存在,但控件不在if语句中.table1和table2存在于数据库中.我在我的数据库中检查过.由于它不在if语句中,所以当我尝试创建表时,它在最后一行给出了以下错误:ORA-00955: name is already used by an existing object.我究竟做错了什么?
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(" +.....
Run Code Online (Sandbox Code Playgroud)
我会替换这一行
ResultSet rs1 = md.getTables(null, null, "table1",types );
Run Code Online (Sandbox Code Playgroud)
用这个
ResultSet rs1 = md.getTables(null, null, "TABLE1",types );
Run Code Online (Sandbox Code Playgroud)
如果表table1和table2被你的程序上面创建,然后他们的名字将被甲骨文资本.尝试
ResultSet rs1 = md.getTables(null, null, "TABLE1", types);
Run Code Online (Sandbox Code Playgroud)
(而且类似地table2)代替.
或者,如果您希望在名称中使用小写字母创建表,请将它们的名称括在双引号中,即
statement.executeUpdate("create table \"table1\" (....)");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1408 次 |
| 最近记录: |