sql数据库自增id在强类型数据集中出现溢出
来源:百度知道 编辑:UC知道 时间:2024/06/21 14:29:52
我使用sqlserver2000,表中id为自增的int(4),强类型数据集中的对应字段id的类型也是System.Int32,但是当我插入的数据量超过short的范围即32767时,出现溢出错误
为了问题清楚一些,贴上一些异常信息,望知情者予以告知,将不甚感激
如下
[OverflowException: 值对于 Int16 太大或太小。]
System.Convert.ToInt16(Int32 value) +2560957
System.Int32.System.IConvertible.ToInt16(IFormatProvider provider) +8
System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +2562644
System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType) +842
[OverflowException: 将参数值从 Int32 转换到 Int16 失败。]
System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType) +904
System.Data.SqlClient.SqlParameter.GetCoercedValue() +58
......
System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +199
HotelsDataSetTableAdapters.HotelsTableAdapter.GetDataById(Int32 id) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\bo
为了问题清楚一些,贴上一些异常信息,望知情者予以告知,将不甚感激
如下
[OverflowException: 值对于 Int16 太大或太小。]
System.Convert.ToInt16(Int32 value) +2560957
System.Int32.System.IConvertible.ToInt16(IFormatProvider provider) +8
System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +2562644
System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType) +842
[OverflowException: 将参数值从 Int32 转换到 Int16 失败。]
System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType) +904
System.Data.SqlClient.SqlParameter.GetCoercedValue() +58
......
System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +199
HotelsDataSetTableAdapters.HotelsTableAdapter.GetDataById(Int32 id) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\bo
把数据库中的id的类型改成bigint就ok了啊
System.Convert.ToInt16(Int32 value)???????????????
short -> System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)
不管你再怎么转换,System.Convert.ToInt16(最大的值也只能够32767)
你就直接用int类型好了!
还是建议用bigint吧