2009-06-18 2 views
0

Я пишу приложение с интерфейсом GUI (GTK) и бэкэнд SQLite. Когда что-то изменяется через графический интерфейс, я хочу, чтобы изменения отображались в графическом интерфейсе тогда и только тогда, когда он успешно завершился в БД.Обеспечение надежной обратной связи с пользователем SQLite

  • Наблюдает код возврата sqlite3_step для SQLITE_ERROR достаточной, чтобы гарантировать, что я не даю ложную обратную связь с пользователем?

  • Если нет, существуют ли другие действия, такие как обратные вызовы или триггеры, которые обеспечивают дополнительную надежность?

  • Есть ли способ обнаружить ВСЕ изменения в базе данных, а не только из собственного соединения программы, чтобы я мог динамически изменять изменения его содержимого в графическом интерфейсе?

ответ

0

Помимо обработки исключений ... Вы должны повторно данные из БД, что пользователь не совершал, нажав на кнопку Сохранить. Таким образом, вы точно знаете, что пользователь видит нужные данные.

+0

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

+0

Принимая это, потому что, хотя я не уверен, что это необходимо, я убежден, что этого достаточно. –

1

Если я правильно понимаю, вы делаете приложение GUI, которое модифицирует информацию в SQLite db.

  • Не действительно, вы можете получить SQLITE_BUSY, если у вас есть темы; SQLITE_INTERNAL; Проверить SQLite documentation. Вместо того, чтобы просить SQLITE_ERROR вы могли бы сделать что-то вроде:

SQLITE_OK или SQLITE_DONE в зависимости от того, что вы делаете.

if (ret != SQLITE_OK || ret != SQLITE_DONE) 
    //then this is an error. 
  • Не знаю, на каком языке вы кодирования, но я абстракцию SQLite в C here. Вам это может показаться интересным.

  • Использование sqlite3_trace()

+0

Действительно, ничего, кроме OK и DONE, было бы ошибкой, но есть ли ошибки, которые строго проверяли бы возвращаемые значения? Ваш ADT самый элегантный, спасибо за ссылку! Я на самом деле работаю на C, чтение этого кода, скорее всего, укажет на многие детали, которые я пропустил. –

+0

Действительно, ничего, кроме OK и DONE, было бы ошибкой, но есть ли ошибки, которые строго проверяют возвращаемые значения? => Не думай так. Что у тебя на уме? Об ADT: Извините, что домашняя страница находится на испанском языке, спросите, нужна ли вам помощь. нп! – Macarse

+0

Между babelfish и лингвистическими сходствами, я могу обрабатывать испанский текст, но спасибо за рассмотрение все равно! (По крайней мере, это было не на японском языке, это было бы серьезной проблемой.) У меня есть подозрительный разум - верю, что ценность, полученная там, где это происходит, заставляет меня нервничать. У меня не было какого-либо конкретного сценария, хотя приведенный ниже ответ Тео напомнил мне, что триггеры внутри БД могут изменить то, что на самом деле происходит, что теоретически под ужасно витой конструкцией БД приводит к контенту, который не был точно тем, что было представлено , Мне нужен точный дисплей. –

 Смежные вопросы

  • Нет связанных вопросов^_^