2009-07-21 19 views

Odpowiedz

2

Podczas budowania ciągów znaków i sprawdzania/ochrony przed iniekcją SQL można po prostu użyć słowa null w łańcuchu SQL lub w instrukcji EXEC z ograniczeniem przecinków.

'calling a stored proc. 
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null" 

Oto jak korzystać zerowy w ręcznie zbudowany ciąg wysłać do DB

strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID 
+0

Niestety muszę użyć procedury przechowywanej, aby zachować spójność w moim projekcie. Czy istnieje sposób, że mogę korzystać z procedur przechowywanych? – burnt1ce

+0

@Burnt: Czy możesz edytować swoje pytanie, aby pokazać, w jaki sposób korzystasz z procedur przechowywanych? Odpowiedź tutaj pokazuje jeden sposób korzystania z procedur przechowywanych, być może używasz innego sposobu. Proszę podać kod, na pewno pomoże. –

10

Przechodząc zerowy do procedury przechowywanej, używając obiektu polecenia.

Set cn = CreateObject("ADODB.Connection") 
Set cmd = CreateObject("ADODB.Command") 
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=.\Test" 
Set cmd.ActiveConnection = cn 
cmd.CommandText = "TestTable.sp_ModifyData" 
cmd.CommandType = 4 
cmd.NamedParameters = True 

set cnParam = cmd.CreateParameter("@RowID",3,3,,-1) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@AddRemoveModify",3,1,,0) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@Value1",3,1,,0) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@Value2",8,1,-1,"Test") 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@value3",5,1,,null) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@value4",5,1,,0) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@value5",8,1,-1,"") 
cmd.Parameters.Append cnParam 
cmd.Execute 
cn.Close 
Set cmd = Nothing 
Set cn = Nothing 

Niestety nie zastanawiałem się nad nazwami pól w mojej bazie danych.

4

Spróbuj vbNullString lub vbNullChar. Możesz także potrzebować adParamNullable.

set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString) 
cnParam.Attributes = adParamNullable 
cmd.Parameters.Append cnParam 

Aktualizacja:

Właściwie to pracował dla mnie:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null) 
cnParam.Attributes = adParamNullable 
cmd.Parameters.Append cnParam 

Huh, to pracował też:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null) 
cmd.Parameters.Append cnParam 

Go figurę.

2

Krótka odpowiedź: ustaw wartość parametru na Null (słowo kluczowe VBScript).