2010-03-10 23 views

cevap

14

DBNull.Value değerini değer olarak girerseniz, ADO.NET parametrenin ne tür olması gerektiğini belirleyemez. Bir dize veya bir tamsayı değeri belirtirseniz, SQL parametresinin türü sağlanan değerden türetilebilir - ancak ne tür DBNull.Value dönüşmeli? Bir NULL değeri geçerken

, açıkça, SqlDbType kendinizi belirtmek gerekir:

Dim photoParam As New SqlParameter("@photo", SqlDbType.Image) 
photoParam.Value = DBNull.Value 
cmd.Parameters.Add(photoParam) 

cmd.ExecuteNonQuery() 

çalışması gerekir Yani, umarım!

Güncelleme: C# aynı şey olacaktır:

SqlParameter photoParam = new SqlParameter("@photo", SqlDbType.Image); 
photoParam.Value = DBNull.Value; 
cmd.Parameters.Add(photoParam); 

cmd.ExecuteNonQuery(); 

bir, ücretsiz, VB.NET-to-C# converter out there çok faydalı harika var - kullanın!

+0

Bunu C# ile nasıl yapılır? – Selase

+0

çalışmadı. Varchar'dan numeric'e dönüştürme hatası. – moldovanu

+1

C# da 1 satırda yazılabilir: cmd.Parameters.Add (yeni SqlParameter ("fotoğraf", SqlDbType.Image) {Değer = DBNull.Value}); – Johann

0
Dim photo_NULL As New SqlTypes.SqlBytes 
.Pararameters.AddWithValue("@photo", IIf(IsNothing(Photo), photo_NULL, Photo)) 
.CommandType = CommandType.StoredProcedure 
F_return = (.ExecuteNonQuery > 0) 
+1

Kod, XML veya veri örnekleri gönderirseniz, * * lütfen metin düzenleyicideki bu satırları vurgulayın ve güzel biçimlendirmek ve sözdizimini vurgulamak için editör araç çubuğundaki "kod örnekleri" düğmesine ({}) tıklayın! –

+1

çalışmadı. Varchar'dan numeric'e dönüştürme hatası. – moldovanu