Я использую библиотеку sqlite3, доступную по адресу sqlite.org.
У меня есть несколько unsigned longs, которые я хотел бы хранить в базе данных. Я не хочу самостоятельно строить запрос и оставлять его открытым для какой-либо инъекции (будь то случайный или нет). Таким образом, я использую функции sqlite_bind_*
для "дезинфекции" моих параметров.
Проблема заключается в том, что для целых чисел без знака нет целых чисел, а только целых чисел.
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
У меня наверняка будут числа, которые будут переполняться, если я не смогу хранить их неподписанным образом.
Мне нужно будет самому справиться с этим? (т.е. приведение к неподписанному типу после выбора из db или литья в подписанный тип перед вставкой в базу данных)
Если мне действительно нужно самому управлять этим, как бы сделать некоторые сравнительные запросы, которые хранятся в виде знакового длинного целого числа, когда сравнение действительно предназначено для использования в неподписанном диапазоне?
Глядя на типы данных INTEGER, которые преобразуются, можно было бы подумать, что беззнаковые longs могут быть представлены без проблем.
Если есть другие доступные решения, пожалуйста, просветите меня! Спасибо!