JDK 9.0.4 с Derby 10.14.2 не может найти созданную таблицу - PullRequest
0 голосов
/ 03 июля 2019

Я попытался запустить некоторый 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());
}
}
}

См. Также печать экрана

1 Ответ

1 голос
/ 03 июля 2019

Три распространенных причины для «таблицы не существует», когда вы думаете, что вы уже создали таблицы:

  1. Вы подключаетесь к другой базе данных, к которой, по вашему мнению, вы подключались, и, поскольку вы указали «create = true» в URL-адресе подключения, Derby тихо создал новую пустую базу данных для вас.

  2. Если вы используете конфигурацию Derby «в памяти», что означает, что при закрытии базы данных (или выходе из приложения) все содержимое базы данных исчезает.

  3. Вы подключаетесь к базе данных как другой пользователь, и вы не выдают инструкцию SET SCHEMA, поэтому вы используете их имя схемы по умолчанию, основанное на вашем имени пользователя, и поэтому две схемы разные и имеют совершенно разные таблицы, поэтому созданная вами таблица, кажется, не существует, когда вы используете другую схема.

УСТАНОВИТЬ ЗАЯВЛЕНИЕ СХЕМА

...