SQL Serverデータベースにとって重要なC#の値を処理するときに何を使用する必要がありますか?
12 に答える
これは、64ビット整数のlong(またはInt64 )に対応します。
データベースの数がたまたま少なく、誤ってInt32などを使用した場合でも問題ありません。しかし、Int64は間違いなくそれを保持します。
そして、もっと小さいものを使用し、フルサイズが必要な場合に発生するエラーはありますか?スタックオーバーフロー!わーい!
Int64
に直接マップしBigInt
ます。
挿入の主キーを返し、
SELECT @@identity
bigintの主キーで、longを使用するとキャストエラーが発生します。これが、この検索を開始した理由です。正解は、少なくとも私の場合、そのselectによって返される型はNUMERICであり、これは10進数型に相当します。longを使用すると、キャスト例外が発生します。
これは、複数のGoogle検索(またはStack Overflow!)で回答を確認する理由の1つです。
私を助けてくれたデータベース管理者を引用するには:
... BigIntは、どれほど似ていてもINT64と同じではありません。その理由の一部は、SQLが通常の処理の一部としてInt/BigIntをNumericに頻繁に変換することです。したがって、OLEまたは.NETに移行する場合、必要な変換はNUMERICからINTになります。
印刷された値は同じように見えるため、あまり気付かないことがあります。
長いデータ型を使用してください。
タイプlong
またはInt64
同等のものはInt64だと思います
SQLのintはint32に直接マップされますが、プリミティブ型、つまりC#のintとしても知られています。
SQL Serverのbigintはint64に直接マップされ、プリミティブ型としても知られています。つまり、C#ではlongです。
bigintegerからintegerへの明示的な変換がここで定義されている場合
ほとんどの場合、C#ではlong(int64)です。
データベーステーブルでbigintを使用している場合は、C#でLongを使用できます。
int(64)またはlongDatatypeはBigIntと同等です。
Convert.ToInt64を使用して、DBから返された(bigint)値を変換することができました。
すなわち
var Id = Convert.ToInt64(identityAsTable.Rows[0].Field<object>(0));
DataGridViewに表示されるbigintデータ型を処理していて、このようにしました
something = (int)(Int64)data_reader[0];