2013-09-29 42 views
1

我在以下代碼中遇到以上錯誤。 listidintegers的列表。不存在從對象類型System.Int32 []到已知的託管提供程序本機類型的映射

SqlConnection cn = new SqlConnection(str1); 
SqlCommand cmd = new SqlCommand("select * from status where uid in {@values}", cn); 
cn.Open(); 
cmd.Parameters.AddWithValue("@values",listid.ToArray()) 
SqlDataReader dr = cmd.ExecuteReader(); 
while (dr.Read()) 
{ 
//code here 
} 
+0

[來自我所知道的](http://stackoverflow.com/questions/9029833/no-mapping-exists-from-object-type-system-string-to-a-known-managed-provider-n)您無法將數組作爲SQL參數傳遞。你有沒有看到它的工作,否則? –

回答

3

你可以查詢更改爲:

SqlCommand cmd = new SqlCommand (String.Format ("SELECT * FROM status WHERE uid IN ({0})", String.Join (",", listid))); 

並取出AddWithValue()線。

+0

非常感謝您的幫助先生..它在「cn」之後工作到您的答案中。 :) – Rajan

+0

我一直試圖添加一個int列表到一個SQL字符串大約一個小時,現在我驚訝於這是唯一可行的方法。微軟在C#中支持某些方法的正確性,但通常有例外,這些例外會讓你感到困惑。 – Alex

相關問題