|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.01.2019, 12:47 | #1 |
Пользователь
Регистрация: 31.08.2018
Сообщений: 19
|
Некорректный postgres запрос
Доброго дня.
Пишу в базу с проверкой существования такой же записи. Пытаюсь автоматизировать, а java ругается. Через pgAdmin код работает, в базу пишет. Может кто то заметит где я забыл что? st = connForBD.createStatement(); PreparedStatement ps = connForBD.prepareStatement("INSERT INTO tbldata (mac_device, name_device, addr_mikrotik, appear_time, signal_power, prioritet, reklama_type) " + "SELECT (?, ?, ?, ?, ?, ?, ?) WHERE NOT EXIST (" + "SELECT mac_device, name_device, addr_mikrotik, appear_time, signal_power, prioritet, reklama_type FROM tbldata " + "WHERE \"mac_device\" = '" + _set.get(4) + "' AND \"name_device\" = '" + _set.get(3) + "' AND \"addr_mikrotik\" = '" + _set.get(2) + "' AND \"appear_time\" = '" + _set.get(6) + "' AND \"signal_power\" = '" + _set.get(5) + "'" + ");"); ps.setString(1, _set.get(4)); ps.setString(2, _set.get(3)); ps.setString(3, _set.get(2)); ps.setString(4, _set.get(6)); ps.setString(5, _set.get(5)); ps.setInt(6, 1); ps.setString(7, "default"); ps.executeUpdate(); ps.close(); st.close(); |
25.01.2019, 12:51 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А во внешнем запросе from не нужен?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
25.01.2019, 15:34 | #3 |
Пользователь
Регистрация: 31.08.2018
Сообщений: 19
|
Ошибки нашёл, но с моим объемом данных данный подход не разумен. Исправленный вариант ниже. Спасибо за внимание)
PreparedStatement ps = connForBD.prepareStatement("INSERT INTO tbldata (mac_device, name_device, addr_mikrotik, appear_time, signal_power, prioritet, reklama_type) " + "SELECT ?, ?, ?, ?, ?, ?, ? WHERE NOT EXISTS (" + "SELECT mac_device, name_device, addr_mikrotik, appear_time, signal_power, prioritet, reklama_type FROM tbldata " + "WHERE \"mac_device\" = '" + _set.get(4) + "' AND \"name_device\" = '" + _set.get(3) + "' AND \"addr_mikrotik\" = '" + _set.get(2) + "' AND \"appear_time\" = '" + _set.get(6) + "' AND \"signal_power\" = '" + _set.get(5) + "'" + ");"); |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Postgres. Не даёт редактировать представление | Artsiom | SQL, базы данных | 6 | 18.07.2017 19:04 |
postgres курсоры | SkrudjMakdak | SQL, базы данных | 1 | 08.03.2014 14:12 |
C# работа с базой данных Postgres | Blondy | Помощь студентам | 1 | 11.02.2014 04:44 |
Delphi, Postgres и Zeos | shidoari | БД в Delphi | 3 | 24.09.2013 11:09 |
Проблема при Insert. Postgres. | ssdm | SQL, базы данных | 2 | 30.03.2011 20:59 |