java嵌入式德比表/视图

时间:2011-02-15 18:30:43

标签: java derby embedding

我创建了嵌入式Derby数据库,它给了我错误。尽管我有APP模式,其中表创建了REST

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();
        }
    }

}

6 个答案:

答案 0 :(得分:2)

我知道我落后了四年,但我终于找到了解决问题的方法(因此我在这个问题上的原因)。

我使用数据库脚本编辑器创建了我的表。我在桌子周围使用了双引号。当我进入服务选项卡(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();
        }
    }
}

干杯!

答案 1 :(得分:1)

表名称区分大小写。确保您创建的表实际上被称为“REST”,并且全部大写,或者它是“休息”或“休息”。

答案 2 :(得分:1)

我在使用嵌入式数据库时遇到了同样的麻烦,并最终清除了相同的内容。这有助于您确保aparna-java.blogspot.com请检查

答案 3 :(得分:0)

一个简单的例子@ http://javabyranjith.blogspot.in/2016/08/apache-derby-with-java-example.html。希望它能有所帮助

答案 4 :(得分:0)

我使用Eclipse做了以下修复:

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

您必须确保数据库位置'文件夹与(编辑驱动程序定义> JAR列表)中提到的Derby.jar位置位于同一位置。如下图所示:

Derby Jar Location

Derby DB Location

希望这会有所帮助。

答案 5 :(得分:-2)

您可能会发现从Derby教程开始学习Derby更容易:http://db.apache.org/derby/docs/10.7/getstart/cgstutorialintro.html