java嵌入式derby表/视图

java嵌入式derby表/视图,java,derby,embedding,Java,Derby,Embedding,我创建了嵌入式Derby数据库,但它给了我一个错误 java.sql.SQLSyntaxErrorException: Table/View 'REST' does not exist. at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source

我创建了嵌入式Derby数据库,但它给了我一个错误

java.sql.SQLSyntaxErrorException: Table/View 'REST' does not exist.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
下面是java类:

public class Main
{   
    private static String dbURL = "jdbc:derby:tes;create=true";
    private static String tableName = "REST";
    // jdbc Connection
    private static Connection conn = null;
    private static Statement stmt = null;

    public static void main(String[] args)
    {
        createConnection();
       insertRestaurants(5, "LaVals", "Berkeley");
        selectRestaurants();
        shutdown();
    }

    private static void createConnection()
    {
        try
        {
         // System.setProperty("derby.system.home", "/Users/myuser/futbol");
          Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
            //Get a connection
            conn = DriverManager.getConnection(dbURL);
        }
        catch (Exception except)
        {
            except.printStackTrace();
        }
    }
     private static void insertRestaurants(int id, String restName, String cityName)
    {
        try
        {
            stmt = conn.createStatement();
            stmt.execute("insert into REST values (" +
                    id + ",'" + restName + "','" + cityName +"')");
            stmt.close();
        }
        catch (SQLException sqlExcept) 
        {
            sqlExcept.printStackTrace();
        }
    }

}

表名区分大小写。确保您创建的表实际上被称为“REST”,并带有所有大写字母,或者是“REST”或“REST”.

从Derby教程开始,您可能会发现学习Derby更容易:

我在嵌入式db上遇到了同样的问题,最终解决了同样的问题。这肯定会帮助您检查这个问题。我知道我在这方面落后了四年,但我最终发现了我是如何解决问题的(因此我在这个线程上的原因)

我使用数据库脚本编辑器创建了表。我在桌子周围用了双引号。当我转到服务选项卡(netbeans)并右键单击我的表以查看数据时,我发现了这一点。我明白了:

select * from {schema}."{table}"
所以,我想我会把它翻译成我的java。还有,宾果。 希望这能对你的应用程序有所帮助,我复制并粘贴了你的一些代码,希望这能起作用

public class Db {
    private final String url = "jdbc:derby://localhost:1527/{db}";
    private final String tab = "{schema}.\"REST\"";

    private static Connection createConnection() throws Exception {
         Connection conn = null;
         conn = DriverManager.getConnection(url);
         return conn;
    }

    private static void insertRestaurants(int id, String restName, String cityName)
    {
        try
        {
            Connection conn = createConnection();
            stmt = conn.createStatement();
            stmt.execute("insert into " + table + " values (" +
                    id + ",'" + restName + "','" + cityName +"')");
            stmt.close();
        }
        catch (SQLException sqlExcept) 
        {
            sqlExcept.printStackTrace();
        }
    }
}

干杯

一个简单的例子@。希望它能有所帮助

我使用Eclipse进行了以下修复:

(在数据库透视图中:窗口>透视图>打开透视图>其他>数据库开发),右键单击数据库连接文件夹>新建>Derby:

您必须确保“Database Location”文件夹与(编辑驱动程序定义>jar列表)中提到的Derby.jar位置相同。如下图所示:


希望这有帮助

是的,这两个都是大写,但仍然给我相同的错误,尽管当我在db中右键单击并选择execute command时,它可以正常工作。但在java中,它给出了这个错误。当使用双引号创建表名时,表名只区分大小写。至少这是标准要求的,据我所知,德比符合标准,谢谢你的评论!我不知道表格是区分大小写的。