Я использую библиотеку sqlite3, доступную по адресу sqlite.org.Связывание «unsigned long» (uint64) в заявлении sqlite3? C++
У меня есть несколько неподписанных длин, которые я хотел бы хранить в базе данных. Я не хочу самостоятельно строить запрос и оставлять его открытым для какой-либо инъекции (будь то случайный или нет). Таким образом, я использую функции sqlite_bind_*
для «дезинфекции» моих параметров.
Проблема заключается в том, что для целых чисел без знака целых чисел нет типа функции.
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
Я определенно буду иметь номера, которые переполнится, если я не могу хранить их в беззнаковое образом.
Должен ли я сам управлять этим? (т. е. приведение к неподписанному типу после выбора из db или отбрасывания до подписанного типа перед вставкой в базу данных)
Если мне действительно нужно управлять этим, как бы сделать некоторые сравнительные запросы, которые хранятся в виде подписанного длинного целого числа когда сравнения действительно предназначены для неподписанного диапазона?
Рассматривая INTEGER datatypes, которые преобразуются, можно подумать, что беззнаковые долготы могут быть представлены без проблем.
Если есть другие решения, пожалуйста, просветите меня! Спасибо!
Я столкнулся с этой проблемой и решил ее, рассматривая 64-битный хэш без знака как подписанное 64-битное значение с целью помещая его в базу данных. – Michael