質問

C#.netを保存したいです ulong T-SQLデータベースに。 SQLとして、これを行うための規定はありません bigint 通常と同じmin/max値を持っています long.

これを行う方法はありますか?またはキャッチしています OverflowException 私の唯一の希望?

役に立ちましたか?

解決

これはあなたの質問に答える必要があります:

http://social.msdn.microsoft.com/forums/en-us/adodotnetdataproviders/thread/ff08c190-a981-4896-9542-3f64b95a84a2/

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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top