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

把数据库中的id的类型改成bigint就ok了啊

System.Convert.ToInt16(Int32 value)???????????????

short -> System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)

不管你再怎么转换,System.Convert.ToInt16(最大的值也只能够32767)

你就直接用int类型好了!

还是建议用bigint吧