Java SQL "ОШИБКА: Отношение" Table_Name "не существует" - PullRequest
3 голосов
/ 23 апреля 2011

Я пытаюсь подключить netbeans к моей базе данных postgresql.Кажется, что соединение работает, так как я не получаю никаких ошибок или исключений при простом подключении, методы, такие как getCatalog (), также возвращают правильные ответы.

Но когда я пытаюсь выполнить простой оператор SQL, я получаюошибка «ОШИБКА: отношение« TABLE_NAME »не существует», где TABLE_NAME - это любая из моих таблиц, которые действительно существуют в базе данных.Вот мой код:

    Statement stmt = con.createStatement();

    ResultSet rs;

    String query = "SELECT * FROM clients";

    rs = stmt.executeQuery(query);

Я думал, что netbeans не может найти таблицы, потому что он не ищет в схеме по умолчанию (public), есть ли способ установить схему в java?

РЕДАКТИРОВАТЬ: мой код подключения.Имя базы данных - Cinemax, когда я пропускаю код оператора, я не получаю ошибок.

    String url = "jdbc:postgresql://localhost:5432/Cinemax";
    try{

    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException cnfe) {
        System.err.println("Couldn't find driver class:");
        cnfe.printStackTrace();
    }

    Connection con = DriverManager.getConnection( url,"postgres","desertrose147");

Ответы [ 4 ]

10 голосов
/ 24 апреля 2011

Я подозреваю, что вы создали таблицу, используя двойные кавычки, например. "Clients" или некоторая другая комбинация прописных / строчных букв, поэтому имя таблицы теперь чувствительно к регистру.

Что означает утверждение

 SELECT table_schema, table_name
 FROM information_schema.tables 
 WHERE lower(table_name) = 'clients'

вернуться?

Если имя таблицы, которое возвращается, не в нижнем регистре, вы должны использовать двойные кавычки при ссылке на него, что-то вроде этого:

String query = "SELECT * FROM \"Clients\"";
2 голосов
/ 14 августа 2013

Вы можете проверить эти возможности:

String query = "SELECT * FROM clients";
String query = "SELECT * FROM CLIENTS";
String query = "SELECT * FROM \"clients\"";
String query = "SELECT * FROM \"CLIENTS\"";
String query = "SELECT * FROM Clients";

Может быть, один из них сработает.

0 голосов
/ 06 июля 2018

Забавно, что я испытал то же, что только что начал на netbeans и postgressql db, и ошибка была исправлена ​​после того, как я заметил, что проблема в том, что мои таблицы в postgressql имели заглавные буквы в моем соглашении об именах, которое я и мойОператору запроса jdbc для INSERT не удалось найти таблицу.Но после переименования моих таблиц в БД и исправления имен столбцов тоже можно приступать.Надеюсь, это поможет.

0 голосов
/ 24 апреля 2011

Помимо предложения CoolBeans, вы также можете подключаться к БД как другой пользователь, у которого нет разрешения на соответствующую БД или схему.Вы можете показать строку подключения?

...