2017-04-08 149 views
-1

我正尝试在Java中的Oracle数据库中创建一个表。当我运行此我得到的错误从Java连接到Oracle数据库

ORA-00900:无效的SQL语句呼叫

无效的参数我不知道如何解决这个问题,我的研究也得出了空。

package Project2; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class Embedded { 

private static String dbURL = "jdbc:oracle:thin:@query.engr.uconn.edu:1521:BIBCI"; 
private static Connection conn = null; 
private static Statement stmt = null; 

public static void main(String[] args) { 
    createConnection(); 
    createTable(); 
    //insertValue(); 
    shutdown(); 
} 

private static void createConnection() { 
    try { 
     Class.forName("oracle.jdbc.OracleDriver").newInstance(); 
     //Get a connection 
     conn = DriverManager.getConnection(dbURL, "cse4701", "datamine"); 
    } catch (Exception except) { 
     except.printStackTrace(); 
    } 
} 

private static void createTable() { 
    //String sql = "CREATE TABLE IG_READY (PatientId VARCHAR(20), APC integer, TP53 integer, KRAS integer, PIK3CA integer, PTEN integer, ATM integer, MUC4 integer, SMAD4 integer, SYNE1 integer, FBXW7 integer, Status integer)"; 
    try { 
     stmt = conn.createStatement(); 
     stmt.executeQuery("creat table CRCDB.IG_READY (PatientId VARCHAR(20), APC integer, TP53 integer, KRAS integer, PIK3CA integer, PTEN integer, ATM integer, MUC4 integer, SMAD4 integer, SYNE1 integer, FBXW7 integer, Status integer, PRIMARY KEY (PatientId));"); 
     //stmt.executeQuery("use CRCDB"); 
     stmt.close(); 
    } catch (SQLException e) { 
     System.out.println(e.getMessage()); 
    } 
} 

private static void shutdown() { 
    try { 
     if (stmt != null) { 
      stmt.close(); 
     } 
     if (conn != null) { 
      DriverManager.getConnection(dbURL + ";shutdown=true"); 
      conn.close(); 
     } 
    } catch (SQLException sqlExcept) { 
     System.out.println(sqlExcept.getMessage()); 
    } 
} 

}

+2

从你的SQL字符串中移除';'。另外:'executeQuery()'用于select语句。要运行DDL,使用'execute()'或'executeUpdate()'。对于Oracle JDBC URL,没有'; shutdown = true'选项。在[Oracle JDBC手册](http://docs.oracle.com/database/121/JJDBC/toc.htm)中,您是否找到这种情况? –

+2

另外,creat应该创建 –

回答

2

错就错在你的SQL语句

stmt.executeQuery("creat table CRCDB.IG_READY (PatientId VARCHAR(20), APC integer, TP53 integer, KRAS integer, PIK3CA integer, PTEN integer, ATM integer, MUC4 integer, SMAD4 integer, SYNE1 integer, FBXW7 integer, Status integer, PRIMARY KEY (PatientId));"); 

你拼写错误的“创建表”

还首次执行小测试表,然后语句创建你的餐桌

我好PE这可能会帮助你解决你的问题,如果我得到任何其他信息,我会告诉你绝对

+0

非常感谢!我修复了这些错误,现在正在获取以下内容.ORA-00604:递归SQL级别1发生错误 ORA-20905:您不能执行此操作。特权不足 ORA-06512:在第2行 调用 – user2464532

+0

中的无效参数假设您没有权限在数据库中创建表。检查oracle数据库系统中的权限。 –

+0

你真的有一个用户名为“CRCDB”..这是我认为的问题 –