Как предотвратить несвязанные параметры Sqlite, интерпретируемые как NULL - PullRequest
1 голос
/ 03 января 2011

Как указывают документы Sqlite, несвязанные параметры в подготовленных инструкциях интерпретируются как NULL - мой вопрос таков:

Есть ли способ заставить Sqlite гарантировать, что все параметры были связаны хотя бы один раз, тем самым гарантируя, что ни один не был пропущен случайно?

Лучше получить ошибку и потребовать вызова sqlite3_bind_null(statement_, col);, чем получить небольшую ошибку, потому что я забыл вызвать sqlite3_bind_* в предложении where оператора обновления!

1 Ответ

2 голосов
/ 03 января 2011

Невозможно отличить несвязанные параметры от параметров, установленных в NULL, с использованием текущих библиотек SQLite.

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

Единственное решение для этого - обернуть функции API SQLite C вашими собственными функциями, которые сделают небольшую бухгалтерию. Вы можете связать растровое изображение с каждой структурой sqlite3_stmt, где каждый бит имеет значение true, если и только если соответствующий параметр связан. Вам нужно будет создать оболочки по крайней мере для sqlite3_bind_*() функций и sqlite3_clear_bindings().

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