Das im Bild angezeigte Feld ID ist aber nicht identisch mit dem Alias id aus Deinem
SQL:
Code:
SELECT last_insert_rowid() as id FROM users
Hier gibst Du dem Ergebnis von last_insert_rowid() den Namen ID. Die Tabelle Users hat aber schon ein Feld mit dem Namen ID. Da könnte es also zu einem Konflikt kommen. Wie wäre es denn mit:
Delphi-Quellcode:
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT last_insert_rowid() as My_Last_id FROM users');
SQLQuery1.open;
if not sqlquery1.IsEmpty then begin
ID := SQLQuery1.FieldByName('My_Last_id').AsInteger;
end;
SQLQuery1.Close;
oder
Delphi-Quellcode:
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT last_insert_rowid() FROM users');
SQLQuery1.open;
if not sqlquery1.IsEmpty then begin
ID := SQLQuery1.Fields[0].AsInteger;
end;
SQLQuery1.Close;
Habe in der Datenbank 'id' ind 'my_last_id' geändert. Nun kennt er in
Code:
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT last_insert_rowid() as my_Last_id FROM users');
SQLQuery1.open;
if not sqlquery1.IsEmpty then begin
ID := SQLQuery1.FieldByName('My_Last_id').AsInteger;
end;
SQLQuery1.Close;
my_last_id nicht. Benenne ich in der Datenbank 'my_last_id' wieder in 'id' um, und benutze den unteren code, dann funktioniert das auslesen der last_insert_row. Ergebniss ist 37.
Code:
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT last_insert_rowid() FROM users');
SQLQuery1.open;
if not sqlquery1.IsEmpty then begin
ID := SQLQuery1.Fields[0].AsInteger;
end;
SQLQuery1.Close;