AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Variable mittels INSERT in die DB speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

Variable mittels INSERT in die DB speichern?

Ein Thema von AlexII · begonnen am 13. Okt 2012 · letzter Beitrag vom 17. Jul 2014
Antwort Antwort
Seite 2 von 3     12 3      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Variable mittels INSERT in die DB speichern?

  Alt 10. Jul 2014, 06:42
Hallo,

vielleicht ohne das : ?

db.AddParamText( 'Vorname', Edit1.Text );
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Variable mittels INSERT in die DB speichern?

  Alt 10. Jul 2014, 08:07
Das dürfte aber keinen Compilerfehler liefern, sondern erst zur Laufzeit rumjammern.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
BenneX

Registriert seit: 9. Jul 2014
21 Beiträge
 
#13

AW: Variable mittels INSERT in die DB speichern?

  Alt 10. Jul 2014, 23:19
Das ist ja nur ein (unvollständiges) Codefragment. Wie hast du die Variablen ( sSQL, db) deklariert?
Hallo,

sSQL ist als String und db mit TSQLiteDatabase deklariert im Hauptformular.
Habe den Fehler jetzt ausfindig gemacht, es lag daran, dass meine TEdits die gleichen Namen trugen.

Leider erstellt er jetzt nur einen leeren Datensatz in der Tabelle ...
Manuelles eintragen per INSERT VALUES geht. Leider nicht mit den Parametern ...

Delphi-Quellcode:
 SQLBefehl := 'INSERT INTO OGame (Koordinaten,Spielername,Metall,Kristall,Deuterium) VALUES ( :Koordinaten1, :Spielername1, :Metall1, :Kristall1, :Deuterium1)';
  Datenbank.AddParamText( ':Koordinaten1', Koordinaten.Text );
  Datenbank.AddParamText( ':Spielername1', Spielername.Text );
  Datenbank.AddParamInt( ':Metall1', strtoint(Metall.Text) );
  Datenbank.AddParamInt( ':Kristall1', strtoint(Kristall.Text) );
  Datenbank.AddParamInt( ':Deuterium1', strtoint(Deuterium.Text) );
  Datenbank.ExecSQL(SQLBefehl);
Mit diesem Quelltext, liefert er leider nur eine leere Zeile in der Tabelle...



Grüße,
BenneX.

Geändert von BenneX (10. Jul 2014 um 23:50 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#14

AW: Variable mittels INSERT in die DB speichern?

  Alt 11. Jul 2014, 01:43
Hier trifft dann höchstwahrscheinlich wieder das Entfernen der ":" zu. Nur aus den Aufrufen von .AddParam*(), im SQL-String müssen diese bleiben. Grund: Der Doppelpunkt signalisiert im SQL-String, dass nun ein Parameter folgt. Der Parametername selbst aber beinhaltet den Doppelpunkt nicht.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Variable mittels INSERT in die DB speichern?

  Alt 11. Jul 2014, 05:00
In der Dokumentation sind die Doppelpunkte auch drinnen. Es fehlt aber eine Pepare.
Markus Kinzler
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#16

AW: Variable mittels INSERT in die DB speichern?

  Alt 11. Jul 2014, 08:56
Oh okay, dann sorry. Ich kannte die verwendeten Komponenten nicht wirklich, habe es aber noch nie gesehen, dass die Parameter ausserhalb des SQL Statements so benannt werden müssen. Voreilige Schlüsse zu später Stunde - scusi!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
BenneX

Registriert seit: 9. Jul 2014
21 Beiträge
 
#17

AW: Variable mittels INSERT in die DB speichern?

  Alt 11. Jul 2014, 11:36
In der Dokumentation sind die Doppelpunkte auch drinnen. Es fehlt aber eine Pepare.
Hallo,

was genau meinst Du mit Pepare?
Meinst du die Delphi Dokumentation oder eine spezielle für den Wrapper?

Grüße!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Variable mittels INSERT in die DB speichern?

  Alt 11. Jul 2014, 11:39
Aus der Doku:
Zitat:
the process is in essence:

1. Call PrepareSQL to return TSQLiteQuery 2. Call BindSQL for each parameter in the prepared query 3. Call ExecSQL to run the prepared query 4. Repeat steps 2 & 3 as required 5. Call ReleaseSQL to free SQLite resources
Markus Kinzler
  Mit Zitat antworten Zitat
BenneX

Registriert seit: 9. Jul 2014
21 Beiträge
 
#19

AW: Variable mittels INSERT in die DB speichern?

  Alt 11. Jul 2014, 13:12
Okay jetzt weiß ich prinzipiell wie ich vergehen muss. Danke für den Tipp mit der Doku. Leider werde ich nicht ganz schlau wie ich BindSQL zu verwenden habe. Was nehme ich als Argumente? Folgendes habe ich versucht:

Datenbank.BindSQL(':Koordinaten1',Koordinaten.Text) meldet mir leider nur "Es gibt keine überladene Version, die man mit diesen Argumenten aufrufen kann".

Grüße!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Variable mittels INSERT in die DB speichern?

  Alt 11. Jul 2014, 13:23
Zitat:
Delphi-Quellcode:
   function PrepareSQL(const SQL: Ansistring): TSQLiteQuery;
    procedure BindSQL(Query: TSQLiteQuery; const Index: Integer; const Value: Integer); overload;
    procedure BindSQL(Query: TSQLiteQuery; const Index: Integer; const Value: String); overload;
In so etwa müsste es aussehen:
Delphi-Quellcode:
Query := Datenbank.PrepareSQL( SQLBefehl);
Datenbank.BindSQL(Query, 0, Koordinaten.Text);
...
Datenbank.ExecSQL(Query);
Ich bin mir aber nicht ganz sicher ob das Bind hier notwendig ist, und nicht erst ab der 2. Verwendung
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz