我得到這個例外,當我嘗試插入DBNull.Value成可空 VARBINARY(最大值)字段:從數據類型爲nvarchar到VARBINARY(最大值)的隱式轉換是不允許
Implicit conversion from data type nvarchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.
那是我的代碼:
insertCMD.Parameters.AddWithValue("@ErrorScreenshot", SqlDbType.VarBinary).Value = DBNull.Value;
我知道這裏存在重複的問題,但我不會像其他人一樣使用任何字符串。
我該怎麼做?
UPDATE:
using (var insertCMD = new SqlCommand("INSERT INTO TestplanTeststep (TeststepId,TestplanId,CreatedAt,ErrorText,ErrorScreenshot,TestState) VALUES (@TeststepId, @TestplanId,@CreatedAt,@ErrorText,@ErrorScreenshot,@TestState)", con))
{
var p1 = insertCMD.Parameters.Add("@TeststepId", SqlDbType.Int);
var p2 = insertCMD.Parameters.Add("@CreatedAt", SqlDbType.DateTime);
insertCMD.Parameters.AddWithValue("@TestplanId", testplan.Id);
insertCMD.Parameters.AddWithValue("@ErrorText", (object) DBNull.Value);
insertCMD.Parameters.AddWithValue("@ErrorScreenshot", (object) DBNull.Value);
insertCMD.Parameters.AddWithValue("@TestState", (int)Teststep.TeststepTestState.Untested);
foreach (Teststep step in teststeps)
{
p1.Value = step.Id;
p2.Value = step.CreatedAt;
insertCMD.ExecuteNonQuery();
}
}
看起來不是正確的代碼行。 UniqueIdentifier完全沒有提及。也許提供存儲過程的定義呢? – Sean 2012-07-10 11:01:35
對不起,我複製了錯誤的異常。現在更正了。 – Pascal 2012-07-10 11:11:57
「AddWithValue」的第二個參數是值。不是數據類型。 – 2012-07-10 11:17:56