我创建了嵌入式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();
}
}
}
答案 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)
答案 4 :(得分:0)
我使用Eclipse做了以下修复:
(在数据库视角:窗口>透视>打开透视>其他>数据库开发),右键单击数据库连接文件夹>新建>德比:
您必须确保数据库位置'文件夹与(编辑驱动程序定义> JAR列表)中提到的Derby.jar位置位于同一位置。如下图所示:
希望这会有所帮助。
答案 5 :(得分:-2)
您可能会发现从Derby教程开始学习Derby更容易:http://db.apache.org/derby/docs/10.7/getstart/cgstutorialintro.html