【问题标题】:Error java.sql.SQLException: ORA-00911: invalid character [duplicate]错误 java.sql.SQLException:ORA-00911:无效字符 [重复]
【发布时间】:2014-04-21 13:26:03
【问题描述】:

我的代码有错误:

String sql = "CREATE USER ken IDENTIFIED BY 11;";

try {
    Class.forName("oracle.jdbc.OracleDriver");
    con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "system", "kenilyas");
    System.out.println("1111111111111");
    System.out.println("222222");
    pst = con.prepareStatement(sql);
    System.out.println("333333");
    try {
        System.out.println("333333");
        pst.execute();
        System.out.println("creating");
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
} catch (Exception e) {
    JOptionPane.showMessageDialog(null, e);
}

【问题讨论】:

  • 有任何诊断信息(行号)吗?我猜; 可能会导致问题,因为 Oracle 驱动程序往往只支持查询中的一个语句。
  • 的;这会导致问题。
  • @Caramiriel 是的,你是对的。简单的解决方案,但我在转向 SO 之前调试了 30 分钟。

标签: sql oracle jdbc


【解决方案1】:

我在 myBatis 中也遇到了同样的问题。

错误:

### Cause: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

    ; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

解决方案:

select * from tableName where id= '123';

从 Where 子句(Mybatis Mapper xml)中删除 ";" 后,它的工作。

【讨论】:

    【解决方案2】:

    问题是;

    sql = "CREATE USER ken IDENTIFIED BY 11;";
    

    从上面的字符串中删除;

    【讨论】:

    • 谢谢!让系统对此不灵活或没有提出非常明确的期望真是太愚蠢了
    • @Georgios 而且系统应该接受那个逗号!
    • @Jarkid 这是分号。
    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2015-03-15
    相关资源
    最近更新 更多