Hi,
ich habe unter FMX ein
Query welches eine Tabelle einer SQLite-
DB abfragt. Es existiert lediglich eine Zeile in der
DB.
Laut
DB-Viewer befindet sich im Feld "username" ein String. (Siehe Bild DBViewer.png im Anhang)
In der Routine liefert mir FieldByName('username').AsString aber immer '0' zurück, und ich kann's mir nicht erklären. Mir ist auch nicht klar, wo er sich die '0' herholt. Wenn er irgendwas nicht lesen oder finden kann, dann sollte nur ein Leerstring kommen.
ich habe das Feld "username" schon mal umbenannt in "loginname" (vielleicht Schlüsselwort der
DB), aber das änderte nichts.
Eigentlich sollte das Verhalten gar nicht möglich sein. Es tritt keine
Exception auf.
Hier mal die Routine:
Delphi-Quellcode:
function TfrmTPMain.GetUsernameFromDB: string;
var
q: TFDQuery;
begin
Result:='';
q:=TFDQuery.Create(nil);
try
q.Connection:=TPDatenmodul.conLocalsqlConnection;
q.SQL.Text:='select * from global';
q.Active:=True;
if q.RecordCount>0 then
begin
q.First;
Result:=q.FieldByName('loginname').AsString;
end;
q.Active:=False;
finally
q.Free;
end;
end;
Im Anhang habe ich noch mal Screenshots vom Debug-Screen und der
DB. Da kann man deutlich sehen, was q.FieldByName('loginname').AsString zurückliefert und was in der
DB steht.
Wie gesagt, ich kann's mir nicht erklären.