-5

我收到一条错误消息,提示“指定的演员表无效。” 我不知道该怎么办,试了一下,但没有去。

        List<string> productCode = new List<string>();
        List<string> productName = new List<string>();
        List<int> quantity = new List<int>();
        List<double> totalPrice = new List<double>();
        List<double> totalTax = new List<double>();
        int orderID = 0;

SqlCeCommand com2 = new SqlCeCommand("SELECT TotalPrice, TotalTax FROM Order_Details WHERE OrderID = ('" + orderID + "')", con);
        SqlCeDataReader dr2 = com1.ExecuteReader();
        while (dr2.Read())
        {
            totalPrice.Add(dr2.GetDouble(0));
            totalTax.Add((double)dr2[1]);
            j++;
        }
4

3 回答 3

1

第 1 列是双列吗?那似乎是您的问题所在。

改变;

totalTax.Add((double)dr2[1]);

至;

totalTax.Add((dr2.GetDouble(1));

该列是否可以为空?如果是这样,也许这会更好。

totalTax.Add((double)(dr2[1] ?? (object)0.0));

此实例中的空字段表示零税。

我会说第 1 列不是double, floator integer(所有这些演员都可以工作)。它可能不会DbNull抛出一个NullReferenceException(尽管我愿意对此进行纠正)。

于 2013-10-31T11:43:46.243 回答
0

需要检查SQL中的类型并匹配.NET中的类型
这应该指出你的问题

SqlCeCommand com2 = new SqlCeCommand("SELECT TotalPrice, TotalTax FROM Order_Details WHERE OrderID = ('" + orderID + "')", con);
SqlCeDataReader dr2 = com1.ExecuteReader();
while (dr2.Read())
{
    if (dr2.IsDBNull(0))
    {
        Debug.WriteLine("dr2[0] isnull ");
    }
    else 
    {
        Debug.WriteLine("dr2[0] = " + dr2[0].ToString());
        totalPrice.Add(dr2.GetDouble(0));
    }
    if (dr2.IsDBNull(1))
    {
        Debug.WriteLine("dr2[1] isnull ");
    }
    else 
    {
        Debug.WriteLine("dr2[1] = " + dr2[1].ToString());
        totalTax.Add(dr2.GetDouble(1));
    }
    j++;
}
于 2013-10-31T13:46:10.717 回答
0

如果 Double 应该使用 totalTax.Add((dr2.GetDouble(1)); 而不是 totalTax.Add((double)dr2[1]); 在这两个字段中获得什么类型的值。

于 2013-10-31T11:59:35.360 回答