无法使用java代码创建oracle表

时间:2012-06-07 12:57:46

标签: java sql oracle

try {
    String strQry= "CREATE TABLE IF NOT EXISTS ERROR_DETAIL (\"SNO\"NUMBER(16,0),\"TABLE_NAME\"  VARCHAR2(32 BYTE),\"ERROR_DESC\" VARCHAR2(255 BYTE),\"XCOORDINATE\" FLOAT(126),\"YCOORDINATE\" FLOAT(126),\"STATUS\"  VARCHAR2(30 BYTE),\"COMMENT\" Varchar2(255 Byte),PRIMARY KEY (\"TABLE_NAME\", \"ERROR_DESC\") ENABLE);";
    stmt = con.createStatement();
    stmt.execute(strQry);

} catch (Exception e) {
    e.printStackTrace();
}

此代码给出错误:

java.sql.SQLSyntaxErrorException: ORA-00922: missing or invalid option

但同样的查询在oracle中正常工作

2 个答案:

答案 0 :(得分:0)

打印strQry变量的内容,您会发现它无效:

  • 您不需要围绕列名称使用双引号
  • 每个列名称与其类型之间应该有一个空格
  • 查询末尾不应该有分号

此外,我认为您应该使用executeUpdate()而不是execute()

答案 1 :(得分:0)

尝试使用下面的代码。

try {
    String strQry= " CREATE TABLE IF NOT EXISTS ERROR_DETAIL (SNO NUMBER(16,0),TABLE_NAME VARCHAR2(32 BYTE),ERROR_DESC VARCHAR2(255 BYTE),XCOORDINATE FLOAT(126),YCOORDINATE FLOAT(126),STATUS VARCHAR2(30 BYTE),COMMENT Varchar2(255 Byte),PRIMARY KEY (TABLE_NAME, ERROR_DESC) ENABLE)";
    stmt = con.createStatement();    
    stmt.execute(strQry);                    

} catch (Exception e) { e.printStackTrace(); }

更改只是移除;内部" (即在给定的代码中它是ENABLE);&#34 ;;

我正在将其更改为ENABLE)";