In een ASP.NET Tes project gebruik ik de volgende code voor het Inserten van een record:
Code:
procedure TDefault.Button1_Click(sender: System.Object; e: System.EventArgs);
var
AConnection : SqlConnection;
ACommand :SqlCommand;
i: Integer;
begin
AConnection := SqlConnection.Create(ConfigurationSettings.AppSettings['ConnString']);
ACommand := SqlCommand.Create('Boeking', AConnection);
ACommand.CommandText:=
'/*BoekingOpslaan*/ '+
'INSERT INTO Aspiranten '+
'(ReisID, Voornaam, Achternaam, Straat, Extra1) '+
'VALUES '+
'(@ReisID, @Voornaam, @Achternaam, @Straat, @Extra1) ';
AConnection.Open;
try
ACommand.Parameters.Add('@ReisID', SqlDbType.Int, 4);
ACommand.Parameters.Add('@Voornaam', SqlDbType.NVarChar, 15);
ACommand.Parameters.Add('@Achternaam', SqlDbType.NVarChar, 30);
ACommand.Parameters.Add('@Straat', SqlDbType.NVarChar, 30);
ACommand.Parameters.Add('@Extra1', SqlDbType.Int, 4);
ACommand.Parameters['@ReisID'].Value:= TObject(25);
ACommand.Parameters['@Voornaam'].Value:= 'Piet';
ACommand.Parameters['@Achternaam'].Value:= 'Jansen';
ACommand.Parameters['@Straat'].Value:= 'Langestraat';
ACommand.Parameters['@Extra1'].Value:= TObject(999);
i:= ACommand.ExecuteNonQuery;
Label1.Text:= i.ToString;
finally
AConnection.Close;
end;
end;
Dit gaat prima tot ik een van de parameters geen value geeft door bv de deze regel uit te
commenteren
Code:
//ACommand.Parameters['@Extra1'].Value:= TObject(999);
Dan krijg ik deze foutmelding:
Prepared statement '(@ReisID int,@Voornaam nvarchar(15),@Achternaam
nvarchar(30),@St' expects parameter @Extra1, which was not supplied.
Vrij logisch - maar ik wil eigenlijk niet als er bv geen "straat" is ingevuld een lege
string als default mee geven. Ik heb immers in de database (SQL Server 2000) al geregeld
dat er een default waarde wordt ingevuldt als er geen waarde is.
Hoe doe jullie dit?
Bookmarks