Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2019, 12:47   #1
Denis Wazowski
Пользователь
 
Регистрация: 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();
Denis Wazowski вне форума Ответить с цитированием
Старый 25.01.2019, 12:51   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А во внешнем запросе from не нужен?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.01.2019, 15:34   #3
Denis Wazowski
Пользователь
 
Регистрация: 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) + "'"
+ ");");
Denis Wazowski вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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