![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
SQLite использует объект sqlite3_value, чтобы представлять все значения,
которые могут быть сохранены в таблице базы данных.
SQLite использует динамический контроль типов для значений, которые это
хранит. Значения, сохраненные в объектах sqlite3_value, могут быть целыми
числами, значениями с плавающей точкой, последовательностями,
BLOB или NULL. Объект sqlite3_value может быть "protected" или "unprotected".
Некоторые интерфейсы требуют защищенного sqlite3_value.
Другие интерфейсы примут защищенный или незащищенный sqlite3_value.
Каждый интерфейс, который принимает аргументы sqlite3_value, определяет,
требует ли он защищенного sqlite3_value.
sqlite3_value_dup()
может использоваться, чтобы построить новый защищенный
sqlite3_value из незащищенного sqlite3_value. Термины "protected" и "unprotected" относятся к тому, проводится ли mutex.
Внутренний mutex проводится для защищенного объекта sqlite3_value, но никакой
mutex не проводится для незащищенного объекта sqlite3_value.
Если SQLite собран, чтобы быть однопоточным
(с SQLITE_THREADSAFE=0,
sqlite3_threadsafe() вернет 0) или
если SQLite управляют в одном из уменьшенных mutex режимов
SQLITE_CONFIG_SINGLETHREAD или
SQLITE_CONFIG_MULTITHREAD,
тогда нет никакого различия между защищенными и незащищенными объектами
sqlite3_value, и они могут использоваться попеременно.
Однако для максимальной переносимости кода рекомендуется, чтобы запросы
все еще делали различие между защищенными и незащищенными объектами
sqlite3_value, даже когда это не строго необходимо. Объекты sqlite3_value, которые передаются как параметры во внедрение
определяемых функций SQL, защищены.
Объекты sqlite3_value, возвращенные
sqlite3_vtab_rhs_value(), защищены.
Объекты sqlite3_value, возвращенные
sqlite3_column_value(), незащищены.
Незащищенные объекты sqlite3_value могут использоваться только в качестве
аргументов sqlite3_result_value(),
sqlite3_bind_value() и
sqlite3_value_dup().
sqlite3_value_type()
требуют защищенных объектов sqlite3_value. 19 методов используют этот объект:
Choose any three.
SQLite C Interface
Объект значения с динамическим контролем типов
typedef struct sqlite3_value sqlite3_value;