Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / PreparedStatement не видит таблицу PostgreSQL / 8 сообщений из 8, страница 1 из 1
20.10.2016, 08:30
    #39330282
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PreparedStatement не видит таблицу PostgreSQL
Добрый день.

Делаю так:

Код: 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
20.10.2016, 08:56
    #39330301
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PreparedStatement не видит таблицу PostgreSQL
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
20.10.2016, 08:58
    #39330303
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PreparedStatement не видит таблицу PostgreSQL
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
20.10.2016, 09:51
    #39330361
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PreparedStatement не видит таблицу PostgreSQL
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
20.10.2016, 10:08
    #39330381
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PreparedStatement не видит таблицу PostgreSQL
MAULERЧто за агрессия? Прям фонтаны говна на ровном месте?!

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

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

Невероятно.

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

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

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

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

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

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

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

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

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

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

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

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

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

Это вопрос.

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

Невероятно.

Но факт.

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

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

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

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

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

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

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

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

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

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

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

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

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


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