2009-07-21 13 views

risposta

2

Se si stanno creando stringhe e si esegue il controllo/protezione da SQL Injection, è possibile utilizzare semplicemente la parola null nella stringa SQL o l'istruzione EXEC delimitata da virgole.

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

Ecco come utilizzare null in una stringa costruita manualmente per inviare al DB

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

Purtroppo devo usare la stored procedure per mantenere la coerenza nel mio progetto. C'è un modo per utilizzare stored procedure? – burnt1ce

+0

@Burnt: sei in grado di modificare la tua domanda per mostrare come stai usando le stored procedure? La risposta qui mostra un modo per usare le stored procedure, forse stai usando un altro modo. Si prega di includere del codice, sarà sicuramente di aiuto. –

10

passando null a una stored procedure, utilizzando un oggetto comando.

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 

Spiacente di non aver riflettuto molto sul nome dei campi nel mio database.

4

Provare vbNullString o vbNullChar. Potrebbe inoltre essere necessario adParamNullable.

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

Aggiornamento:

In realtà questo ha lavorato per me:

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

Eh, questo ha lavorato anche:

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

Go figura.

2

Risposta breve: impostare il valore del parametro su Null (parola chiave VBScript).

Problemi correlati