sqlite.orgで入手できるsqlite3ライブラリを使用しています。
データベースに保存したい署名されていないlongがいくつかあります。自分でクエリを作成して、何らかの注入(偶発的かどうかに関係なく)を可能にしておきたくありません。したがって、私はsqlite_bind_*
関数を使用してパラメーターを「サニタイズ」しています。
問題は、符号なし長整数の関数型がなく、整数だけであるということです。
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
署名なしで保存できない場合は、間違いなくオーバーフローする番号があります。
これを自分で管理する必要がありますか?(つまり、データベースから選択した後に符号なし型にキャストするか、データベースに挿入する前に符号付き型にキャストします)
これを自分で管理する必要がある場合、比較が実際には符号なしの範囲にあることを意図しているときに、符号付き長整数として格納されているいくつかの比較クエリをどのように実行しますか?
変換されるINTEGERデータ型を見ると、unsignedlongsは問題なく表現できると思います。
他に利用できる解決策がある場合は、私に教えてください!ありがとう!