Привязка "беззнакового длинного" (uint64) в операторе sqlite3? C ++

Я использую библиотеку sqlite3, доступную на sqlite.org .

У меня есть несколько беззнаковых long, которые я хотел бы сохранить в базе данных. Я не хочу сам создавать запрос и оставлять его открытым для какой-либо инъекции (будь то случайной или нет). Таким образом, я использую функции sqlite_bind _ * для «очистки» моих параметров.

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

int sqlite3_bind_int (sqlite3_stmt *, int, int);

int sqlite3_bind_int64 (sqlite3_stmt *, int, sqlite3_int64);

У меня определенно будут числа, которые переполнятся, если я не смогу сохранить их в без подписи.

Придется ли мне самому управлять этим? (т.е. приведение к беззнаковому типу после выбора из базы данных или приведение к типу со знаком перед вставкой в ​​базу данных)

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

Глядя на типы данных INTEGER , которые преобразуются, можно подумать, что беззнаковые длинные числа могут быть представлены без проблем.

Если есть другие решения, пожалуйста, просветите меня! Спасибо!

16
задан g19fanatic 14 December 2011 в 04:20
поделиться