| 
 | 
| 
 
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=40050645&tid=2120510]:  | 
    0ms | 
get settings:  | 
    8ms | 
get forum list:  | 
    15ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    55ms | 
get topic data:  | 
    12ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    57ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 233ms | 
| total: | 390ms | 

| 0 / 0 | 
