2011-03-18 10 views
22

Böyle bir şey yapıyordu beklendiği gibi çalışmıyor SqlParameter 0 boş aynıdır varsayar neden kimse bana söyleyebilir misiniz?SqlParameter

Düzenleme: MSDN bu burada açıklar: Eğer için SqlParameter yapıcı bu aşırı kullanmak SqlParameter Constructor

+4

Tamam, burada açıklanmaktadır: http://msdn.microsoft.com/en-us/library/0881fz2y%28v=VS.80%29.aspx Varsayılan değer "0" olan yeni bir SqlParameter oluştururken, tamsayıya açıkça döküm gerekir. Aksi takdirde ikinci parametre olarak bir SqlDbType enum geçiyoruz varsayar. – Meryovi

cevap

38

tedbiri alın tamsayı parametre değerlerini belirtin. Bu aşırı yükleme, tipi Object değerini aldığından, aşağıdaki C# örneğinin gösterdiği gibi değeri integral değerini bir Nesne türüne dönüştürmeniz gerekir. Eğer bu dönüşümü gerçekleştirmek yoksa

Parameter = new SqlParameter("@pname", Convert.ToInt32(0)); 

, derleyici SqlParameter (dize SqlDbType) yapıcısı aşırı ulaşmaya çalışıyorum varsayar.

Teşekkür Msdn :)

5

İçinde geçiyoruz 0 tip değil, bir değerdir. o boks ihtiyacı olmadığı için, nesnenin daha iyi "eşleşme" altta yatan enum türünde 0 anlam ve vardır - 0 değişmezleri (ve sabit değerler) herhangi enum türü için izin verilir. Şahsen

, ben kullanırım; Belki de nesne başlatıcısında

Value = 0 

.