![]() |
Datenbank: SQLite • Version: 1111 • Zugriff über: sqlite4delphi
Zweite Zeile SQLite ansprechen
Hallo Leute,
Für mein nächstes Projekt brauche ich in meinem Programm eine kleine Datenbank und stehe im Moment vor folgendem Problem:
Delphi-Quellcode:
In Edit1 und Edit2 wird korrekter Weise der erste Datensatz eingetragen.
SQLTable:= database.GetTable('SELECT * FROM Spieler ORDER BY Spielername');
Edit1.Text:=SQLTable.FieldAsString(SQLTable.FieldIndex['Alter']); Edit2.Text:=SQLTable.FieldAsString(SQLTable.FieldIndex['Spielername']); Edit3.Text:=SQLTable.FieldAsString(SQLTable.FieldIndex['Alter']); Edit4.Text:=SQLTable.FieldAsString(SQLTable.FieldIndex['Spielername']); Wie kann ich nun in Edit 3 und Edit4 den zweiten Datensatz eintragen? Viele Grüße, BenneX |
AW: Zweite Zeile SQLite ansprechen
Kennt Deine SQLTable die Methode Next?
|
AW: Zweite Zeile SQLite ansprechen
Auf den nächsten datensatz wechseln. Wenn es sich um einen TDataSet-kompatiblen Wrapper handelt mit
Delphi-Quellcode:
SQLTable.Next;
|
AW: Zweite Zeile SQLite ansprechen
Wunderbar!
Delphi-Quellcode:
hat funktioniert.
SQLTable.Next
Ich danke Euch für die schnelle Hilfe und werde mich sicher nochmal zurück melden mit weiteren Fragen. Grüße, BenneX |
AW: Zweite Zeile SQLite ansprechen
Gleich die nächste Frage hinterher:
Delphi-Quellcode:
Es muss doch möglich sein, dass Variablen als Values fungieren, oder?
a:='23';
SQLBefehl := 'INSERT INTO Spieler (Koordinaten, Spielername) VALUES (a,"BenneX")'; database.execsql(SQLBefehl); Wie oben beschrieben, krieg ich nur den SQL Fehler "No such column: a" Grüße! |
AW: Zweite Zeile SQLite ansprechen
|
AW: Zweite Zeile SQLite ansprechen
Zitat:
Delphi-Quellcode:
Mavarik
SQLBefehl := 'INSERT INTO Spieler (Koordinaten, Spielername) VALUES ("'+a+'","BenneX")';
|
AW: Zweite Zeile SQLite ansprechen
So aber nur, wenn gar nichts anderes funktioniert.
|
AW: Zweite Zeile SQLite ansprechen
Grundsätzlich sollte doch langsam bekannt sein, daß im "kompilierten" Programm keine Variablennamen mehr existieren und selbst wenn, woher soll der Code, innerhalb des ExcecSql-Befehls wissen welche Variable mit dem Namen "a" gemeint ist, wenn es die Codestelle doch nicht kennt, wo das A deklariert/zugänglich ist.
Man muß also die Variable oder den Kontext (z.B. ein Daten-Objekt) übergeben. Und wenn du das "a" nunmal nicht als Parameter/Variable deklarierst, dann ist es doch klar, daß es an dieser Stelle, von der Syntax her, nur ein Feld sein kann, und da es kein Feld "a" in der Tabelle gibt, muß es auch knallen. Wir haben uns ein eigenes ExecSql geschrieben
Delphi-Quellcode:
, welches die übergebenen Parameter an Params übergibt.
function xxx.ExceSql(Query: string; Params: array of variant);
Delphi-Quellcode:
Der Parametername ist hier natürlich egal, da rein auf den Index gegangen wird, also der erste Parameter-Wert geht auch an den ersten Parameter im SQLBefehl.
SQLBefehl := 'INSERT INTO Spieler (Koordinaten, Spielername) VALUES (:a, "BenneX")';
DataBase.ExecSql(SQLBefehl, [a]);
Delphi-Quellcode:
[/delphi]
b := 'Position';
a := 'Spieler'; SQLBefehl := 'INSERT INTO Spieler (Koordinaten, Spielername) VALUES (:a, :b)'; DataBase.ExecSql(SQLBefehl, [b, a]); SQLBefehl := 'INSERT INTO Spieler (Koordinaten, Spielername) VALUES (:position, :name)'; DataBase.ExecSql(SQLBefehl, [b, a]); |
AW: Zweite Zeile SQLite ansprechen
Zitat:
Und sonst ist nur noch zu sagen Parameter,Parameter,Parameter......... Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz