@@ -195,6 +195,8 @@ public short GetInt16(int ordinal)
195
195
return checked ( ( short ) ( ulong ) value ) ;
196
196
if ( value is decimal )
197
197
return ( short ) ( decimal ) value ;
198
+ if ( value is bool )
199
+ return ( bool ) value ? ( short ) 1 : ( short ) 0 ;
198
200
return ( short ) value ;
199
201
}
200
202
@@ -207,16 +209,15 @@ public int GetInt32(int ordinal)
207
209
throw new InvalidCastException ( ) ;
208
210
209
211
var columnDefinition = ResultSet . ColumnDefinitions [ ordinal ] ;
210
- if ( ( columnDefinition . ColumnType != ColumnType . Tiny &&
212
+ if ( columnDefinition . ColumnType != ColumnType . Tiny &&
211
213
columnDefinition . ColumnType != ColumnType . Short &&
212
214
columnDefinition . ColumnType != ColumnType . Int24 &&
213
215
columnDefinition . ColumnType != ColumnType . Long &&
214
216
columnDefinition . ColumnType != ColumnType . Longlong &&
215
217
columnDefinition . ColumnType != ColumnType . Bit &&
216
218
columnDefinition . ColumnType != ColumnType . Year &&
217
219
columnDefinition . ColumnType != ColumnType . Decimal &&
218
- columnDefinition . ColumnType != ColumnType . NewDecimal ) ||
219
- ( columnDefinition . ColumnType == ColumnType . Tiny && Connection . TreatTinyAsBoolean && columnDefinition . ColumnLength == 1 && ( columnDefinition . ColumnFlags & ColumnFlags . Unsigned ) == 0 ) )
220
+ columnDefinition . ColumnType != ColumnType . NewDecimal )
220
221
{
221
222
throw new InvalidCastException ( "Can't convert {0} to Int32" . FormatInvariant ( ResultSet . ColumnTypes ! [ ordinal ] ) ) ;
222
223
}
@@ -252,6 +253,8 @@ public long GetInt64(int ordinal)
252
253
return checked ( ( long ) ( ulong ) value ) ;
253
254
if ( value is decimal )
254
255
return ( long ) ( decimal ) value ;
256
+ if ( value is bool )
257
+ return ( bool ) value ? 1 : 0 ;
255
258
return ( long ) value ;
256
259
}
257
260
@@ -277,6 +280,8 @@ public ushort GetUInt16(int ordinal)
277
280
return checked ( ( ushort ) ( ulong ) value ) ;
278
281
if ( value is decimal )
279
282
return ( ushort ) ( decimal ) value ;
283
+ if ( value is bool )
284
+ return ( bool ) value ? ( ushort ) 1 : ( ushort ) 0 ;
280
285
return ( ushort ) value ;
281
286
}
282
287
@@ -302,6 +307,8 @@ public uint GetUInt32(int ordinal)
302
307
return checked ( ( uint ) ( ulong ) value ) ;
303
308
if ( value is decimal )
304
309
return ( uint ) ( decimal ) value ;
310
+ if ( value is bool )
311
+ return ( bool ) value ? ( uint ) 1 : ( uint ) 0 ;
305
312
return ( uint ) value ;
306
313
}
307
314
@@ -327,6 +334,8 @@ public ulong GetUInt64(int ordinal)
327
334
return checked ( ( ulong ) ( long ) value ) ;
328
335
if ( value is decimal )
329
336
return ( ulong ) ( decimal ) value ;
337
+ if ( value is bool )
338
+ return ( bool ) value ? ( ulong ) 1 : ( ulong ) 0 ;
330
339
return ( ulong ) value ;
331
340
}
332
341
0 commit comments