【问题标题】:java.sql.SQLSyntaxErrorException: Syntax error: Encountered "(" at linejava.sql.SQLSyntaxErrorException:语法错误:遇到“(”在行
【发布时间】:2012-10-24 01:38:51
【问题描述】:

我正在执行以下操作:

private void createTable() {
    try {       
        PreparedStatement psCreateTable = con.prepareStatement("CREATE TABLE     COMPANIES(" +
                "name VARCHAR(50), " +
                "location VARCHAR(50), " +
                "address VARCHAR(50), " +
                "website VARCHAR(50), " +
                "pit VARCHAR(50), " +
                "asset_class VARCHAR(50), " +
                "telephone INTEGER, " +
                "shares INTEGER, " +
                "value DOUBLE(,2) UNSIGNED)");
        psCreateTable.execute();
    } catch (SQLException e) {
        System.out.println("already exists");
        e.printStackTrace();
        ; //bestaat al
    }
}

我收到以下错误: java.sql.SQLSyntaxErrorException:语法错误:在第 1 行第 195 列遇到“(”。

不太确定现在该做什么,因为 SQL 查询对我来说似乎有效并重新检查了它。

【问题讨论】:

    标签: java sql prepared-statement sqlexception


    【解决方案1】:

    去掉double数据类型中的(,2)

    CREATE Table Companies
    (
        ....,
        value DOUBLE UNSIGNED
    )
    

    See Demonstration

    【讨论】:

    • 好的,我试过了,但现在我收到以下错误:java.sql.SQLSyntaxErrorException: Syntax error: Encountered "UNSIGNED" at line 1, column 196。
    • 删除了 'UNSIGNED' 参数,似乎可行,但现在我收到以下错误:java.sql.SQLException: 当前语句的至少一个参数未初始化。
    • @MarvinEffing 但它正在使用 sql fiddle。你点击链接了吗?
    • @MarvinEffing 您在上面发布的代码是您正在使用的代码吗?为什么帽子会显示错误消息At least one parameter to the current statement is uninitialized.?您还有其他参数化查询吗?
    • 是的,现在可以工作了,我总是忘记最细微的事情。
    【解决方案2】:

    您的 SQL 查询有错误:"value DOUBLE(,2) UNSIGNED)");

    将您的 PreparedStatement 更改为以下内容:

    PreparedStatement psCreateTable = con.prepareStatement("CREATE TABLE COMPANIES(" +
                    "name VARCHAR(50), " +
                    "location VARCHAR(50), " +
                    "address VARCHAR(50), " +
                    "website VARCHAR(50), " +
                    "pit VARCHAR(50), " +
                    "asset_class VARCHAR(50), " +
                    "telephone INTEGER, " +
                    "shares INTEGER, " +
                    "value DOUBLE UNSIGNED)");
    

    【讨论】:

      【解决方案3】:
      DOUBLE(,2)
      

      这是错误的。

      你可以试试

      DOUBLE(5,2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-04
        • 2018-03-26
        • 1970-01-01
        • 1970-01-01
        • 2020-03-10
        • 2017-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多