ArrayList容量不超过32768

时间:2017-10-05 20:56:13

标签: c# arraylist collections

我有一个从数据库返回大量行的方法。 (请参阅以下内容)

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

Full exception screen

1 个答案:

答案 0 :(得分:0)

将导致问题的变量类型更改为Int32Int64,然后您就可以插入更大或更小的数字。