Du kannst das ganze auch umkompliziert über eine Stored Procedure machen.
So kannst du auch gleich Daten-Updates mit realisieren.
Zudem hast du den Vorteil, das die SP deine Anwendung von der
DB entkoppelt. Falls sich später Feldnamen ändern oder die Daten woanders gespeichert werden sollen, dann eine musst du nur die SP anpassen.
Hier ein kleines Beispiel:
auf dem
SQL-Server einmalig eine SP erzeugen
SQL-Code:
CREATE PROCEDURE SET_Table1_Data
@ID INT =NULL
@NVARCHAR_VALUE NVARCHAR(255) = NULL,
AS
BEGIN
-- Parameter prüfen
-- Daten aktualisieren, falls ID nicht NULL ist und existiert
UPDATE Table1 SET Ein_VARCHAR_Feld = @NVARCHAR_VALUE
WHERE ID = @ID AND ID IS NOT NULL
IF @@ROWCOUNT = 0 -- (also kein Datensatz aktualisiert wurde (RowsAffected =0) )
BEGIN
INSERT INTO Table1 (
Ein_NVARCHAR_Feld
)
VALUES (
@NVARCHAR_VALUE
)
END
END
In Delphi würde ich die SP so benutzen:
Delphi-Quellcode:
function SaveData:Boolean;
var SP:TAdoStoredPoc;
begin
Result:=False;
SP:=TAdoStoredProc.create(nil);
try
SP.Connection:=Datamodule1.AdoConn; // hier gehören noch ein paar Prüfungen hin
SP.Procedurename='SET_Table1_Data'; // z.B. ist AdoConn.Connected=true ?
SP.Parameters.refresh; //
SP.Parameters[2].value:=Eine_ID_oder_NULL;
SP.Parameters[3].value:=Ein_String_der_in_NVARCHAR_Feld_geschrieben_werden_soll;
SP.ExecProc;
Result:=true;
finally
FreeAndNil(SP);
end;
end;
Schöne Grüße,
Jens