t-sqlはulongを保存できますか?
質問
C#.netを保存したいです ulong
T-SQLデータベースに。 SQLとして、これを行うための規定はありません bigint
通常と同じmin/max値を持っています long
.
これを行う方法はありますか?またはキャッチしています OverflowException
私の唯一の希望?
解決
これはあなたの質問に答える必要があります:
Bigintを使用します。署名されたタイプをC#の署名のないタイプに戻す方法に注意する必要があります。
// This has not been tested
unchecked
{
myUlong = myDataReader.GetInt64(...);
}
...
もう1つの可能性は、varbinaryを8の長さで使用し、C#でバイトを範囲に変換することです。
他のヒント
私はそれが同じではないことを知っていますが、これはそうです:
select convert(decimal(38, 0), 12345678901234567890123456789012345678)
署名されていないロングの最大値は、18,446,744,073,709,551,615であると思われます。変換が発生する可能性がありますが、アプリケーションのいくつかのラッパー機能がかなり迅速に並べ替えると確信しています。
私にとっては、ニール・Nの解決策はうまくいきませんでした。 Visual Studioは、私が割り当てられないと不平を言い続けました long
aへの値 ulong
変数に関係なく unchecked
.
最終的に機能したのは単純でした
ulong fileSize = (ulong)(long)reader["fileSize"];
(それなしunchecked
).
SQLite DBでは、値は保存されます long
, 、そのため、非常に高い値は負になり、SQLサイドでそれらをソートすることは失敗します。しかし、取得した後 ulong
価値linqはその魔法を行うことができます
items = items.OrderByDescending(x => x.FileSize).ToList();
所属していません StackOverflow