Hi ihr,
Um für meinen
Routenplaner möglichst schnell auf die entsprechenden Daten zugreifen zu können, nutze ich eine
SQL-Datenbank.
Dabei dachte ich mir, ich könnte mit einem einfachen INSERT - Statement die Daten in die Datenbank eintragen. Allerdings funktioniert das nicht wie gedacht.
So werden die Daten in die Datenbank geschrieben:
Delphi-Quellcode:
procedure TORPDataBase.WriteNodeToDB(Node: TORPNode);
begin
fQuery := TZQuery.Create(
nil);
try
DecimalSeparator := '
.';
with fQuery
do
begin
Connection := fConnection;
ParamCheck := true;
SQL.Add('
INSERT INTO `NODES` (TILE, TIMESTAMP, TAGS, VISIBLE, USER_ID, LONGITUDE, LATITUDE, ID) VALUES (:tile, :timestamp, :tags, :visible, :userid, :lon, :lat, :id)');
ParamByName('
tile').AsInteger := 0;
ParamByName('
timestamp').AsDateTime := Now();
ParamByName('
tags').AsString := '
';
ParamByName('
visible').AsInteger := 1;
ParamByName('
userid').AsInteger := 0;
ParamByName('
lon').AsFloat := StrToFloat(Node.Lon);
ParamByName('
lat').AsFloat := StrToFloat(Node.Lat);
ParamByName('
id').AsInteger := StrToInt(Node.ID);
ExecSQL;
end;
finally
fQuery.Free;
end;
end;
So wird die Verbindung aufgebaut:
Delphi-Quellcode:
function TORPDatabase.Connect(DBUser, DBPassword, DBHostName: string): boolean;
begin
with fConnection do
begin
Protocol := 'firebird-2.0';
ReadOnly := false;
User := DBUser;
Password := Password;
Database := fCompleteDBPath;
HostName := DBHostName;
if not FileExists(fCompleteDBPath) then
CreateEmptyDB;
Connect;
Result := Connected;
end;
end;
Es scheint, als würden in dem Code oben die Parameter nicht verarbeitet werden. Zumindest sieht der resultierende
SQL - String so aus:
INSERT INTO `NODES` (TILE, TIMESTAMP, TAGS, VISIBLE, USER_ID, LONGITUDE, LATITUDE, ID) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
Sieht jemand, was ich falsch mache?