我將對象分配給此SqlParameter列表,然後嘗試執行SqlCommand,但它引發異常,表示其中一個對象無法轉換爲SqlDbType。我最好在將它們添加到參數集合列表之前處理這些對象。那麼,我將如何檢查一個值被添加到參數列表中是否是一個好的/適當的值?我應該檢查什麼屬性?如何知道/檢查一個值是否與SqlDbType兼容?
這裏是我的代碼:
bool Submit(Progs progs, CommandType commandType, string commandText)
{
try
{
List<SqlParameter> paramCollection = new List<SqlParameter>();
foreach(Prog p in progs)
{
SqlParameter spTemp = new SqlParameter { ParameterName = p.Name , Value = p.Value};
paramCollection.Add(spTemp);
using (SqlConnection con = GetConnection())
{
SqlCommand cmd = new SqlCommand { CommandType = commandType, CommandText = commandText, Connection = con };
con.Open();
cmd.Parameters.AddRange(paramCollection); // Exception is thrown from this line
cmd.ExecuteNonQuery();
}
return true;
}
catch(Exception exc)
{
return false;
}
}
異常thown說: 沒有映射從對象類型sol2.CodeBase.BL.Letter []到已知的託管提供原生類型的存在。
PS:有一個屬性的SqlParameter的所謂ParamaterIsSqlType(是的,這paramAter而不是參數),其僅在運行時出現(即當我檢查spTemp與下一行斷點),並且這些始終設置爲false?這是什麼樣的屬性,以便它只在運行時出現?另外,這個「ParamaterIsSqlType」表示什麼值?
此屬性是不公開的,因此你不能看也不能使用它,是的,它的拼寫錯誤,但[不固定] (http://connect.microsoft.com/VisualStudio/feedback/details/90483/the-word-parameter-is-misspelled-in-the-paramaterissqltype-flag-in-the-non-public-members-of-system -data-的SqlClient-的SqlParameter)。 – 2012-02-25 20:48:42
什麼是'param'?它在哪裏宣佈?您還打開連接兩次,應該引發[InvalidOperationException](http://msdn.microsoft.com/en-us/library/system.invalidoperationexception.aspx)。 – 2012-02-25 20:54:23
雅,這是一個打字錯誤,現在修復。所以,現在,你會如何建議檢查轉換是否可能?另外,這個paramaterIsSqlType表示什麼(爲什麼它總是錯誤的,或者當它是真的)? – MrClan 2012-02-25 21:06:52