3

smallintSQLServerにタイプの列があります。このフィールドを含む行をAdo.netで読みました。

そのSQLServer行を取得したらDataRow、次のコードのように整数に変換しようとします。

int value = datarow.Field<int>("myColumnName");

フィールドがですので、smallintに変換する必要があると思いますint。しかし、それは例外をスローします

指定されたキャストは無効です.....

Convert.ToInt32その他の機能は使いたくない。Datarowのフィールド拡張メソッドを使用したい。どうやってやるの?
編集:

datarow.Field<int>("myColumnName"); // doesnt work
datarow.Field<Int16>("myColumnName"); // doesnt work
datarow.Field<short>("myColumnName"); // doesnt work
Convert.ToInt32(datarow["myColumnName"]) // works but i dont want it
4

2 に答える 2

3

SQL Serverデータ型マッピング(ADO.NET)を参照してください。

SMALLINTSQL Serverでは16ビット整数であるためInt16、.NETではにマップされます

したがって、使用する必要があります

Int16 value = datarow.Field<System.Int16>("MyColumnName")

値を読み取るには

于 2012-04-30T13:51:47.393 に答える
0

使用、datarow.Field <byte>( "myColumnName");

于 2014-03-26T07:30:23.020 に答える