powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / PreparedStatement не видит таблицу PostgreSQL
8 сообщений из 8, страница 1 из 1
PreparedStatement не видит таблицу PostgreSQL
    #39330282
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Делаю так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
InitialContext cxt = new InitialContext();
DataSource ds = (DataSource)cxt.lookup("java:/comp/env/jdbc/postgres");

Connection conn = ds.getConnection();

PreparedStatement preparedStatement = null;
preparedStatement = conn.prepareStatement("INSERT INTO mytable (FirstName, SecondName, LastName, Receiver, Theme, Message) VALUES (?, ?, ?, ?, ?, ?);");

preparedStatement.setString(1, "FirstName");				
preparedStatement.setString(2, "SecondName");				
preparedStatement.setString(3, "LastName");				
preparedStatement.setString(4, "Receiver");				
preparedStatement.setString(5, "Theme");				
preparedStatement.setString(6, "Message");

preparedStatement.executeUpdate();



Вылетает с такой ошибкой:

org.postgresql.util.PSQLException: ERROR: column "firstname" of relation "mytable" does not exist

Везде в интернете, объект Connection создается через

Код: java
1.
DriverManager.getConnection(url, name, password);



Но программисты мне сказали, что этот вариант не многопоточный, и для TomCat лучше использовать DataSource.
Который умеет создавать пулл подключений и управлять ими.

Вот и маюсь ((
...
Рейтинг: 0 / 0
PreparedStatement не видит таблицу PostgreSQL
    #39330301
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULERДобрый день.

Делаю так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
InitialContext cxt = new InitialContext();
DataSource ds = (DataSource)cxt.lookup("java:/comp/env/jdbc/postgres");

Connection conn = ds.getConnection();

PreparedStatement preparedStatement = null;
preparedStatement = conn.prepareStatement("INSERT INTO mytable (FirstName, SecondName, LastName, Receiver, Theme, Message) VALUES (?, ?, ?, ?, ?, ?);");

preparedStatement.setString(1, "FirstName");				
preparedStatement.setString(2, "SecondName");				
preparedStatement.setString(3, "LastName");				
preparedStatement.setString(4, "Receiver");				
preparedStatement.setString(5, "Theme");				
preparedStatement.setString(6, "Message");

preparedStatement.executeUpdate();



Вылетает с такой ошибкой:

org.postgresql.util.PSQLException: ERROR: column "firstname" of relation "mytable" does not exist

Везде в интернете, объект Connection создается через

Код: java
1.
DriverManager.getConnection(url, name, password);



Но программисты мне сказали, что этот вариант не многопоточный, и для TomCat лучше использовать DataSource.
Который умеет создавать пулл подключений и управлять ими.

Вот и маюсь ((

Если таблица находится не в схеме public - нужно указывать название схемы ещё.

С уважением, Валентин
...
Рейтинг: 0 / 0
PreparedStatement не видит таблицу PostgreSQL
    #39330303
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULER
Код: java
1.
PreparedStatement preparedStatement = null;



Зачем null?

MAULERВылетает с такой ошибкой:
org.postgresql.util.PSQLException: ERROR: column "firstname" of relation "mytable" does not exist

Первая же ссылка из гугла по этой ошибке...
http://stackoverflow.com/a/14189391
...объясняет что вы нихера не врубаетесь в чувствительность к регистру в PostgreSQL
Вас даже не смутило что firstname в ошибке это не FirstName в вашем коде.

MAULERВезде в интернете, объект Connection создается через
Код: java
1.
DriverManager.getConnection(url, name, password);



При чем тут Connection? Это есть такая проблема в том что туториалы зачастую оторваны от реальной жизни. Но если вам в туториале про JDBC начнуть объяснять весь JEE, то будет слишкм.
Как это к вашей ошибке относится?

MAULERНо программисты мне сказали

Ммм, а вы тогда кто?

MAULER, что этот вариант не многопоточный, и для TomCat лучше использовать DataSource.
Который умеет создавать пулл подключений и управлять ими.

Либо это были не программисты, либо вы ничего не поняли из того что они вам сказали. И Tomcat, а не TomCat, что за рвение к Camel Case?
...
Рейтинг: 0 / 0
PreparedStatement не видит таблицу PostgreSQL
    #39330361
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Что за агрессия? Прям фонтаны говна на ровном месте?!

Проблему решил.
Она, кстати, была совсем в другом.

Blazkowicz...объясняет что вы нихера не врубаетесь в чувствительность к регистру в PostgreSQL
Вас даже не смутило что firstname в ошибке это не FirstName в вашем коде.


Странно, а вот этот INSERT почему то работает:
Код: sql
1.
INSERT INTO mytable ("FirstName", "SecondName", "LastName", "Receiver", "Theme", "Message") VALUES ('11', '22', '33', 'ivan@mail.ru', '44', '55')



Интересно что ОН объясняет? Может то, что Ваша версия про чувствительность к регистру - не рабочая? ))
Или то, что Вы не разглядели в моём запросе ошибку в виде отсутствия кавычек рядом с именами полей?

Интересно, откуда PostgreSQL выдумал поле FirstName из полностью строчных букв? Может быть потому, что ему абсолютно пофигу на это?
Как это предположение соотносится с Вашим "не CameCase" мировосприятием?

И, да. От того что Вы встали сегодня "не с той ноги" CamelCase тут не при чем. И дело не в "рвении" а просто в привычке.
Ругать за которую, не видя при этом главной ошибки, как минимум не красиво.
...
Рейтинг: 0 / 0
PreparedStatement не видит таблицу PostgreSQL
    #39330381
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULERЧто за агрессия? Прям фонтаны говна на ровном месте?!

Херасе заява.

MAULERОна, кстати, была совсем в другом.

Невероятно.

MAULERСтранно, а вот этот INSERT почему то работает:

Конечно, странно. Ведь в нём откуда не возьмись появились кавычки!

MAULERИнтересно что ОН объясняет? Может то, что Ваша версия про чувствительность к регистру - не рабочая? ))
Или то, что Вы не разглядели в моём запросе ошибку в виде отсутствия кавычек рядом с именами полей?

Он объясняет то что вы даже не прошли по ссылке и не потрудились прочитать что там пишут.

MAULERИнтересно, откуда PostgreSQL выдумал поле FirstName из полностью строчных букв? Может быть потому, что ему абсолютно пофигу на это?

Ну, а открыть мануал PostgreSQL и прочитать про чувствительность к регистру, это ведь вообще за гранью. Ему, конечно же, пофигу. Просто запрос не работал и всё. А так, пофигу. Очевидно же любому.

MAULERКак это предположение соотносится с Вашим "не CameCase" мировосприятием?

Потому что Tomcat это не TomCat. Потому что CamelCase в RDBMS никто в здравом уме не использует, чтобы не выгребать странностей на ровном месте.

MAULERРугать за которую, не видя при этом главной ошибки, как минимум не красиво.
Какое смелое заявление. Пойду причешусь, чтобы было покрасивее.
...
Рейтинг: 0 / 0
PreparedStatement не видит таблицу PostgreSQL
    #39330391
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
postgresq по умолчанию создает таблицу и используется все имена в lowercase.
Чтобы явно использовать имя в uppercase нужно обрамить в кавычки тогда можно воткнуть что угодно в наименования
пример

create table demo (id serial, "привет Мир" text)

чтобы вставить извлечь из таблицы придется всегда явно указывать верное наименование обрамленное в кавычки.

select "привет Мир" from demo;
insert into demo("привет Мир") values('привет мир');
...
Рейтинг: 0 / 0
PreparedStatement не видит таблицу PostgreSQL
    #39330400
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

Спасибо Вам за короткий и понятный ответ!
...
Рейтинг: 0 / 0
PreparedStatement не видит таблицу PostgreSQL
    #39330407
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczХерасе заява.

Это вопрос.

BlazkowiczMAULERОна, кстати, была совсем в другом.

Невероятно.

Но факт.

BlazkowiczMAULERСтранно, а вот этот INSERT почему то работает:

Конечно, странно. Ведь в нём откуда не возьмись появились кавычки!

Ну почему же? - я их добавил.

BlazkowiczMAULERИнтересно что ОН объясняет? Может то, что Ваша версия про чувствительность к регистру - не рабочая? ))
Или то, что Вы не разглядели в моём запросе ошибку в виде отсутствия кавычек рядом с именами полей?

Он объясняет то что вы даже не прошли по ссылке и не потрудились прочитать что там пишут.

Так я раньше ответ нашел.

BlazkowiczMAULERИнтересно, откуда PostgreSQL выдумал поле FirstName из полностью строчных букв? Может быть потому, что ему абсолютно пофигу на это?

Ну, а открыть мануал PostgreSQL и прочитать про чувствительность к регистру, это ведь вообще за гранью. Ему, конечно же, пофигу. Просто запрос не работал и всё. А так, пофигу. Очевидно же любому.

За гранью Ваше поведение на форуме.

BlazkowiczMAULERКак это предположение соотносится с Вашим "не CameCase" мировосприятием?

Потому что Tomcat это не TomCat. Потому что CamelCase в RDBMS никто в здравом уме не использует, чтобы не выгребать странностей на ровном месте.

"Иногда банан - это просто банан"(с)

BlazkowiczMAULERРугать за которую, не видя при этом главной ошибки, как минимум не красиво.
Какое смелое заявление. Пойду причешусь, чтобы было покрасивее.
Так вот в чем проблема ?! )))
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / PreparedStatement не видит таблицу PostgreSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]