带有Derby 10.14.2的JDK 9.0.4找不到创建的表

时间:2019-07-03 11:29:41

标签: java sql derby

我尝试运行一些Java类InsertApp,该类应将现有表MYTABELLE22推入几行。 我从控制台得到异常表不存在。

import java.sql.*;
public class InsertApp {
public static void main(String [] args) {
Connection con = null;
try {
  con = DriverManager.getConnection(
    "jdbc:derby:/Users/apolit/DerbyDatenbank;create=true");
  Statement sta = con.createStatement(); 

// insert 3 rows
  int count = 0;
  int c = sta.executeUpdate("INSERT INTO MyTabelle22"
    + " (ID, MYKEY, CONTENT)"
    + " VALUES (1, 1, 'Bellevue')");
  count = count + c;

  c = sta.executeUpdate("INSERT INTO MyTabelle22"
    + " (ID, MYKEY, CONTENT)"
    + " VALUES (2, 2, 'Hull')");
  count = count + c;

  c = sta.executeUpdate("INSERT INTO MyTabelle22"
    + " (ID, MYKEY, CONTENT)"
    + " VALUES (3, 2, 'W. York')");
  count = count + c;
  System.out.println("Number of rows inserted: "+count);

  sta.close();
  con.close();        
} catch (Exception e) {
  System.err.println("Exception: "+e.getMessage());
}
}
}

Please see also print screen

1 个答案:

答案 0 :(得分:1)

当您认为已经创建表时,“表不存在”的三个常见原因:

  1. 您正在连接的数据库与您认为要连接的数据库不同,并且由于在连接URL上指定了“ create = true”,因此Derby悄悄为您创建了一个新的空数据库。

    < / li>
  2. 如果您正在使用Derby的“内存中”配置,这意味着当数据库关闭(或您的应用程序退出)时,数据库的所有内容都会消失。

  3. 您以其他用户身份连接到数据库,并且您 不会发出SET SCHEMA语句,所以您正在使用它们 默认架构名称,该名称基于您的用户名,因此 两个模式是不同的,并且具有完全不同的表,因此 当您使用其他表格时,您创建的表格似乎不存在 模式。

SET SCHEMA STATEMENT