有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Derby嵌入式数据库中的java查询

我试过这个问题

String sql1="select * from custinf";
        try {
            stmt=conn.createStatement();
            stmt.execute(sql1);
            stmt.close();
        } catch (SQLException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }

它抛出

java.sql.SQLSyntaxErrorException: Table/View 'CUSTINF' does not exist.
    at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
    at org.apache.derby.client.am.ClientStatement.execute(Unknown Source)
    at com.atuts.cms.database.Database.addCustomer(Database.java:57)
    at com.atuts.cms.database.Database.main(Database.java:31)
Caused by: ERROR 42X05: Table/View 'CUSTINF' does not exist.
    at org.apache.derby.client.am.ClientStatement.completeSqlca(Unknown Source)
    at org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown Source)
    at org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknown Source)
    at org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown Source)
    at org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown Source)
    at org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unknown Source)
    at org.apache.derby.client.am.ClientStatement.readPrepareDescribeOutput(Unknown Source)
    at org.apache.derby.client.am.ClientStatement.flowExecute(Unknown Source)
    at org.apache.derby.client.am.ClientStatement.executeX(Unknown Source)
    ... 3 more

当我将查询更改为String sql1="select * from \"custinf\"";它起作用了。我在使用mysql数据库时没有遇到过这个问题。有人能解释一下吗


共 (2) 个答案

  1. # 1 楼答案

    Derby表名区分大小写。它可以是“Custinf”或“Custinf”

    您可以删除custinf表并使用适当的大小写重新创建

  2. # 2 楼答案

    引自an answer to a different question

    select * from table3
    

    will be automatically processed by the database as if it was

    select * from TABLE3
    

    while

    select * from "table3"
    

    will successfully match the table you created as create table "table3"

    因此,如果表被创建为custinf,则必须使用"custinf"。使用不带引号的custinf将把查询转换为使用可能不存在的表名CUSTINF