我遇到了一些在下面抛出错误的现有代码,这是使用.net Framework 4.5.2和v4.0.30319 \ System.Data.dll
我已将代码示例简化为引发错误的部分。
看看经过反编译的dll,那里似乎是一个错误,还寻找可以修复此错误的新版本,但这似乎是System.Data的最新版本。
数据库数据类型为bigint
我该如何以尊重传入的int64值的方式更新行数据,而又不试图隐瞒int32?
Exception whilst flushing buffered appenders: System.ArgumentException:Value
was either too large or too small for an Int32.Couldn't store
<32370073298665472> in SerialisationTimeMilliseconds Column. Expected type
is
Int32. ---> System.OverflowException: Value was either too large or too
small
for an Int32.
at System.Convert.ToInt32(Int64 value)
at System.Int64.System.IConvertible.ToInt32(IFormatProvider provider)
at System.Data.Common.Int32Storage.Set(Int32 record, Object value)
at System.Data.DataColumn.set_Item(Int32 record, Object value)
--- End of inner exception stack trace ---
at System.Data.DataColumn.set_Item(Int32 record, Object value)
at System.Data.DataRow.set_Item(DataColumn column, Object value)
private static void PopulateRow(long number, DataRow row)
{
row[0] = number;
}
答案 0 :(得分:0)
列定义被混淆了,我以为它选择了要传递的值的数据类型。
从
更改 Columns.Add("number", typeof(int));
到
Columns.Add("number", typeof(long));