|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
Добрый день. Пытаюсь сделать INSERT в БД PostgreSQL, вылазит такая ошибка: Код: java 1. 2.
Сами коды: Хранимая процедура в PostgreSQL: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код в Java: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Вызываю метод: Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 14:01 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
sql: IN transactiondate date java: String TRANSACTION_DATE ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 14:12 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
LiQuid, _preparestatement = _connection.prepareStatement("call public. new_order(?,?,?,?,?)"); не пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 14:29 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
Garrick, Пробовал, все равно та же ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 15:44 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
am_sasa, Так любая БД принимает String как Date со среды Java, с PostgreSQL по другому? К тому же БД не принимает не только transactiondate date, так же предпоследний параметр в хранимой процедуре IN approvalstatus text так же не принимает, я пробовал и IN approvalstatus varchar, та же ошибка. Сколько раз отправлял в столбец Date в БД со среды Java в такие БД как Oracle, MS SQL Server, MS Access, SQLite..и все они String "01-01-2021" к примеру спокойно принимали и вставляли в столбец с типом Date в БД. Что не так с PostgreSQL? У нее что ограничение? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 15:48 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
Ответили же сразу что не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 16:01 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
А, сейчас увидел, что претензия к отсутствию преобразования типов. Ну тут смириться. Всегда можно будет сделать вариант, когда работает не так, как ожидалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 16:03 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
Пришлось использовать sql.date Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Код: java 1. 2. 3. 4. 5. 6.
Insert заработал. Просто по с другими БД такой ерунды никогда не было, можно было спокойно String "dd-mm-yyyy" отправлять со среды Java и БД вставляла в стоблец типом Date переданную переменную String. А вот с PostgreSQL надо четко указывать тип переменной. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 16:12 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
LiQuid, в общем для хранимок такое Код: sql 1. 2. 3. 4. 5.
не требуется достаточно Код: java 1.
тогда и дата будет вставляться строкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 18:15 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
LiQuid Просто по с другими БД такой ерунды никогда не было, можно было спокойно String "dd-mm-yyyy" отправлять со среды Java и БД вставляла в стоблец типом Date переданную переменную String. Для 99.0000% СУБД и сред, представление данных зависит от локали Неявное преобразование String -> Data в 90% - чистое везение и гуанокод. За очень редким исключением, когда это точно описано в документации и/или специально прибито гвозьдями. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 18:49 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
LiQuid Так любая БД принимает String как Date Хотите, чтобы везло чаще - используйте литералы дат: Код: psql
Хотите, чтобы работало - передавайте требуемый тип, а не то, что вам вздумается. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 19:13 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
LiQuid Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Тут - странно как-то. У тебя возможен вариант что параллельно работающие потоки одновременно прочитают одинаковый transaction_id и вставят его. И будет 2 ордера с одинаковым ID или конфликт уникального ключа. Проверял? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 19:43 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
LiQuid Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
А это зачем? Подчеркивание. Бывший сишник? Тебе не достаточно Java-инкапсуляции? И нужно еще какие-то дополнительные хитрые символы вводить? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2021, 19:45 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
mayton, Угадал, бывший С-шник. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 07:32 |
|
Java vs PosgreSQL Insert
|
|||
---|---|---|---|
#18+
mayton Бывший сишник? Плохой сишник ))) connection.prepareStatement - есть а preparestatement.close - нет В высоконагруженной системе - ресурс леак однако. AFAIK p.s. 1) в Java НЕТ диструкторов. Хотя есть finallize, который НЕ является диструктором и из-за которого только хуже. Т.к. в низконагруженной системе ресурс леак можно не заметить, а в высоконагруженной, когда все начнет на проде падать - уже мата не хватает, весь код перелапачивать и close() раставлять. 2) в Java сейчас есть try for resource в данном случае, это значительно лучше, чем ненужный и даже вредный catch IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2021, 11:29 |
|
|
start [/forum/topic.php?fid=59&msg=40050845&tid=2120510]: |
0ms |
get settings: |
18ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
26ms |
get topic data: |
2ms |
get forum data: |
1ms |
get page messages: |
462ms |
get tp. blocked users: |
0ms |
others: | 330ms |
total: | 846ms |
0 / 0 |