проблема вызова функции - PullRequest
0 голосов
/ 07 января 2011

Я собираюсь вызвать функцию, которая будет извлекать некоторое значение данных из базы данных.но до этого я отправляю эти данные.я просто проверяю, правильно ли вставлены эти данные или нет с помощью этого вызова функции.но вставка данных занимает некоторое время для вставки в базу данных, но мой вызов функции начинается до того, как он фактически вставит данные в базу данных.По этой причине он обнаруживает, что в базу данных не вставлено никаких данных.Может ли кто-нибудь сказать, как мне решить эту проблему.Как это синхронизировать.Должен ли я получить правильный результат после правильной вставки в базу данных.я не могу использовать здесь Runnable интерфейс или класс потока.Я думаю, что мне нужно сделать, это вызвать функцию доступа к данным через определенное время, чтобы данные получили достаточно времени для вставки в базу данных.пожалуйста, помогите мне.

Ответы [ 2 ]

1 голос
/ 07 января 2011

Не знаете, какой язык вы используете, но, возможно, у функции есть параметр, который заставляет ее ждать, пока запрос не завершится, прежде чем вернуться? Что-то упоминание слова "синхронный?"

0 голосов
/ 07 января 2011

Использовать драйвер базы данных

Я не знаком с JDBC, поэтому не уверен, какие инструменты вам доступны / недоступны, но кажется, что вы делаете больше работы, чем нужно.

Обычно драйвер базы данных сообщает вам, был ли запрос выполнен успешно, поэтому вам не нужно, чтобы ваше приложение запрашивало данные впоследствии, чтобы убедиться, что данные есть. Вместо этого запрашивает у водителя ошибки , чтобы узнать, была ли проблема с запросом.

Если вы вставляете большой объем данных и ваша база данных поддерживает его, вы можете использовать транзакцию для выполнения вставки. Это передаст все данные в базу данных, попытается вставить и предупредит вас о любых проблемах.

Если возникают проблемы с транзакцией, вы можете выполнить откат, и состояние базы данных будет таким же, как и при запуске (очевидно, вам потребуется обработать ошибки, чтобы сохранить ваши данные). Если проблем нет, вы можете завершить фиксацию транзакции и быть уверенным, что состояние базы данных соответствует состоянию приложения.

Альтернативы

Если по какой-либо причине вышеуказанные методы не сработают, вы можете попытаться разрешить состояние гонки, используя шаблон событий. Проще говоря, вы хотите вызвать событие , когда данные будут вставлены, чтобы предупредить валидатор, что он может начать чтение данных. Валидатор прослушает это событие и сработает, когда его услышит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...