0 голосов
 
454 просмотра
25.12.2019 / 17:30  wRadchuk

Работа с JDBC

Всем привет. Пытаюсь удаленно создать пользователя в своей базе данных MySQL и не испытываю проблем в этом. A вот как узнать создан ли пользователь или нет после совершения запроса в Java, не пойму. Когда открываю MySQL Workbench вижу успешный результат, а попытка создать такого же пользователя повторно естественно приводить в try-catch в Java клиенте. Неужели если о неудаче можно узнать в этом блоке, то нельзя узнать о успешном запросе после его обработки?


P.S. Использую последнюю версию коннектора:
  1. mysql-connector-java-8.0.18 -  драйвер для работы с MySQL.
Изм. wRadchuk от 25.12.2019 / 17:32
Ответы
 
2 голоса
 
# 25.12.2019 / 20:41  aNNiMON
При создании mysql юзера, запись о нём добавляется в таблицу mysql.users
Вот и проверяй:
  1. SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username')
Открыть спойлер
Изм. aNNiMON от 25.12.2019 / 20:45
25.12.2019 / 22:26  wRadchuk
Спасибо сейчас попробую.

Открыть спойлер
26.12.2019 / 01:21  wRadchuk
Проверка наличия пользователя заработала, ещё раз спасибо.

Открыть спойлер
 
-2 голоса
 
# 25.12.2019 / 18:32  Death
Может когда пользователь хочет создаться ты его запросишь, если такой есть, то запретить ему добавляться?

Да и как ты сам поймёшь, чтотон уже есть, такой же. Id генерируется порядково или рандомно каждый раз, от тебя зависит. А пользователь, по имени? Возрасту? Росту? Как определишь, что это тот, что уже есть?

Вопрос с корректируй лучше
25.12.2019 / 18:50  wRadchuk
Я создаю пользователя базы данных но не с таким количеством прав как у root.
Это делает мой сервер принимая данные клиента по TCP/IP, так как у клиента нет таких прав.
А потом клиент работает с базой на прямую без посредника (сервера). Вот мне на этапе создания
пользователя нужно знать, создан ли он в базе, чтобы сервер отдал ответ клиенту и разорвал
соединения. Дальше уже клиент и база должны общаться самостоятельно и если сервер создавая
пользователя не кинул сообщение в try-catch, а поль
25.12.2019 / 18:51  wRadchuk
... пользователь не создался - то клиент не сможет
постучатся к базе. Вот я и хотел бы проверять это не тупо исключением, а знать явный результат
запроса после его обработки. Конечно идея хорошая, проверять пользователя на существование,
но тогда надо это делать перед и после запроса, но может есть возможность создавать не 3 запроса, а узнать результат одного?
Всего: 2

Реклама

Мы в соцсетях

tw tg yt gt