2009-07-21 13 views

Antwort

2

Wenn Sie Strings erstellen und SQL Injection überprüfen/schützen, können Sie einfach das Wort null in Ihrer SQL-Zeichenfolge oder einer durch Kommas getrennten EXEC-Anweisung verwenden.

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

Hier ist, wie in einem von Hand gebaut String null verwenden, um die DB

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

Leider muss ich gespeicherte Prozedur verwenden, um Konsistenz in meinem Projekt zu erhalten. Gibt es eine Möglichkeit, gespeicherte Prozeduren zu verwenden? – burnt1ce

+0

@Burnt: Können Sie Ihre Frage bearbeiten, um zu zeigen, wie Sie gespeicherte Prozeduren verwenden? Die Antwort hier zeigt eine Möglichkeit, gespeicherte Prozeduren zu verwenden, vielleicht verwenden Sie einen anderen Weg. Bitte fügen Sie Code bei, es wird definitiv helfen. –

10

Passing null auf eine gespeicherte Prozedur zu senden, ein Befehlsobjekt verwenden.

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 

Entschuldigung, ich habe nicht viel darüber nachgedacht, die Felder in meiner Datenbank zu benennen.

4

Versuchen Sie VbNullString oder VbNullChar. Möglicherweise benötigen Sie auch adParamNullable.

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

Update:

Eigentlich ist das für mich gearbeitet:

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

Huh, das auch gearbeitet:

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

Go figure.

2

Kurze Antwort: Setzen Sie den Parameterwert auf Null (VBScript-Schlüsselwort).

Verwandte Themen