2016-03-30 20 views
1

Merhaba çocuklar ASP.NET'te bir hata alıyorum (kod arkasında VB) ve ne anlama geldiğini bilmiyorum. benim veritabanındaHata mesajını anlamanız gerekiyor

Dim v_command1 As New SqlCommand 
Dim v_sqlcode1 As String 
v_sqlcode1 = "Update Session SET Endtime = DATEADD(Hour,'" & DRPL_DURATION.SelectedValue & "','" & TXTBX_START.Text & "') WHERE SessionID = ('" & TXTBOX_SESSIONID.Text & "')" 
     v_sqlconn.Open() 

bir tablo güncelleştirmek için kod aşağıda yürütmek Bu kod ben için ne kadar süreceğini değiştirmeye karar zaman bana bir toplantının bitiş saatini güncellemek için muktedir izin vermelidir olarak hata geliyor . hatası alıyorum şudur:

Additional information: Argument data type varchar is invalid for argument 2 of dateadd function. 

kimse bu ne hata mesajı aracı olabilir bir fikir var.

Teşekkür

+0

Parametreli sql komut nesneleri kullanın, bu saf kötülüktür. – JonH

cevap

3

Hata belirtildiği gibi, DATEADD() ikinci bağımsız değişken için varchar veri türünü kullanamazsınız. looking for an integer. o zaman, değil bir tamsayı ise

"[...] Hour, " & DRPL_DURATION.SelectedValue & ", [...]" 

ve aslında bir metin dizesi geçirmek için çalışıyoruz: Eğer geçiyoruz değeri o tamsayı ise

, basitçe tek tırnak kaldırma Yaptığınız şeyi yeniden düşünmeniz gerekir çünkü bir tarihe metin ekleyemezsiniz.

Not: Ayrıca, bu gibi değerleri doğrudan birleştirmek yerine parametreli sorgular kullanmayı şiddetle tavsiye ediyorum. Bu, kodunuza, sorgu parametreleriyle elimine edilen bir SQL enjeksiyon güvenlik açığı sunar. Ayrıca, değeri yalnızca sorgu motoruna ilettiğinizde ve motorun veri türünü nasıl yöneteceğine karar verdiğinizde, sütun veri türleriyle ilgili hataların çok daha nadir olduğunu göreceksiniz.

+0

Hızlı yanıt için teşekkürler. sadece tek qoutes kaldırılması sadece iyi çalıştı. Paratmetrised quries'i kullanarak yaptığınız diğer yorumunuz hakkında daha fazla bilgi verirseniz, bu konu hakkında daha fazla bilgi sahibi olabilirsiniz ... teşekkürler –

+0

@ D-Boy110: Başlamanız için iyi bir örnek gibi görünüyor: http: // stackoverflow. com/questions/542510/how-do-i-create-a-parameterized-sql-query-why-should-i Değerleri doğrudan birleştirdiğinizde, kullanıcıya * değerlerini * SQL * olarak adlandırılan kod *. Ancak parametreler kullanarak SQL sürücüsüne hangi parçaların kod olduğunu ve hangi parçaların değer olduğunu açıkça söylersiniz ve buna göre bunları işler. – David

0

Bu hata iletisinin ikinci bir bağımsız değişkeni DATEADD(..). ile ilişkilidir Bir tamsayı (sayı) değeri kullanmanız gerekir.

Daha fazla bilgi için belgelere bakın DATEDD.

İlgili konular