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数据库时没有遇到过这个问题。有人能解释一下吗
# 1 楼答案
Derby表名区分大小写。它可以是“Custinf”或“Custinf”
您可以删除custinf表并使用适当的大小写重新创建
# 2 楼答案
引自an answer to a different question:
因此,如果表被创建为
custinf
,则必须使用"custinf"
。使用不带引号的custinf
将把查询转换为使用可能不存在的表名CUSTINF