जब मैं एक नल varbinary (अधिकतम) क्षेत्र में एक DBNull.Value सम्मिलित करने की कोशिश मैं इस अपवाद: यहीअंतर्निहित रूपांतरण की अनुमति नहीं है
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;
मुझे पता है कि SO पर डुप्लिकेट प्रश्न मौजूद हैं, लेकिन मैं दूसरों की तरह किसी भी स्ट्रिंग का उपयोग नहीं करता हूं।
मुझे क्या गलत लगता है?
अद्यतन:
INSERT INTO TestplanTeststep
(TeststepId,TestplanId,CreatedAt,ErrorText,ErrorScreenshot,TestState)
VALUES
(@TeststepId, @TestplanId,@CreatedAt,NULL,NULL,@TestState)
या सिर्फ
INSERT INTO TestplanTeststep
(TeststepId,TestplanId,CreatedAt,TestState)
VALUES
(@TeststepId, @TestplanId,@CreatedAt,@TestState)
... और दो पैरामीटर छोड़ देते हैं:
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
क्षमा करें मैंने गलत अपवाद कॉपी किया है। अब यह सही है। – Pascal
'AddWithValue' का दूसरा पैरामीटर मान है। डेटाटाइप नहीं। –