我有一个从数据库返回大量行的方法。 (请参阅以下内容)
public static ACollection GetListFromDatabase(string customername)
{
DBFactory factory = DBFactory.Instance;
ACollection custcol = new ACollection();
//This is a collection class extended from System.Collections.CollectionBase
System.Data.IDataReader reader = null;
try
{
reader = factory.GPDb.ExecuteReader("spGetCustomerInfo", customernumber);
while (reader.Read())
{
ACollection cust = ACollection.ListFromReader(reader); // returns info and assign it to ACollection object.
custcol.InnerList.Add(cust);
}
}
catch (Exception e)
{
String error = e.Message;
}
finally
{
if (reader != null)
reader.Close();
}
return custcol;
}
当我运行这个方法时,我意识到custcol.InnerList的计数是32767,它应该在34000左右。然后我看到它变成了异常。
错误消息显示“对于Int16,值太大或太小。”
我相信,这个arraylist的容量在某种程度上被指定为int16。有人可以帮助我增加容量吗?
由于
修改 这是完整的堆栈跟踪
at System.Convert.ToInt16(Int64 value)
at System.Int64.System.IConvertible.ToInt16(IFormatProvider provider)
at System.Convert.ToInt16(Object value)
at Quest___Shared.CustomerCrossReference.ListFromReader(IDataReader reader) in C:\vsproject\CustomerCrossReference.cs:line 105
at Quest___Shared.ACollection.GetListFromDatabase(String customernumber) in C:\vsproject\ACollection.cs:line 88
答案 0 :(得分:0)
将导致问题的变量类型更改为Int32
或Int64
,然后您就可以插入更大或更小的数字。