HTML5 локальная база данных SQL - Как выполнить последовательность ряд транзакций базы данных, где порядок имеет значение - PullRequest
1 голос
/ 12 августа 2011

Я работаю над веб-приложением на основе HTML5, которое будет использовать локальную базу данных SQL.

Когда приложение запускается, оно должно сделать следующее (упрощенно, но примерно правильно):

  1. Проверьте, существует ли база данных; если нет, создайте его
  2. Проверьте, существует ли таблица A; если нет, создайте его
  3. Проверьте, существует ли таблица B; если нет, создайте его
  4. Проверьте, существует ли таблица C; если нет, создайте его
  5. Проверьте, какие данные имеются в каждой таблице A; если он пуст, предварительно заполните его значениями по умолчанию
  6. Проверьте, какие данные имеются в каждой таблице B; если он пуст, предварительно заполните его значениями по умолчанию
  7. Проверьте, какие данные имеются в каждой таблице C; если он пуст, предварительно заполните его значениями по умолчанию
  8. Визуализация интерфейса на основе данных, полученных в шагах 5-7

Насколько я понимаю, каждая транзакция executeSQL является асинхронной.

В этом случае - определенные шаги должны быть выполнены, прежде чем другие шаги могут быть выполнены. Другими словами, # 1 должен быть завершен, прежде чем что-либо еще может произойти. Далее # 2, # 3 и # 4 не должны выполняться последовательно - но # 2 должен быть завершен до # 5, # 3 должен быть завершен до # 6 и т. Д.

Это должно быть довольно распространенным испытанием. Итак, как лучше всего кодировать ряд зависимых транзакций SQL, как это?

Для чего оно стоит - это приложение предназначено исключительно для iPhone, поэтому мне не нужно беспокоиться о причудах браузера или проверять наличие этой функции. Но кросс-браузерное решение всегда предпочтительнее.

Заранее большое спасибо!

1 Ответ

2 голосов
/ 12 августа 2011

executeSql принимает функцию обратного вызова обработчика данных в качестве аргумента. Функция обработчика данных выполняется после выполнения запроса и дает вам доступ к набору результатов. Просто выполните следующий запрос в обработчике данных предыдущего запроса.

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