2013-10-31 49 views
-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++; 
     } 
+1

嗎? – Gusdor

+0

確實發生什麼線錯誤請不要在標題中使用的標籤,但標籤正確的問題:http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles – bump

+4

什麼是你的柱子的類型NS? –

回答

1

第1列是雙?這似乎是你的問題所在。

變化;

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

to;

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

列是否可以爲空?如果是這樣,也許這會更好。

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

本例中的空字段表示零稅。

我想說,第1列不是double,floatinteger(所有這些演員將工作)。它可能不是DbNull,因爲這會拋出NullReferenceException(雖然我願意糾正)。

+1

-1'cast'應該可以工作..不需要'GetDouble'! – Anirudha

+1

兩者都是一樣的。這有什麼幫助? –

+0

如果dr2爲空將會失敗。需要檢查IsDBNull。 – Paparazzi

0

什麼類型的值,你得到的兩個領域,如果雙擊的,你應該使用totalTax.Add((dr2.GetDouble(1));而不是totalTax.Add((雙)DR2 [1]);.

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++; 
}