Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Variable mittels INSERT in die DB speichern? (https://www.delphipraxis.net/170985-variable-mittels-insert-die-db-speichern.html)

BenneX 11. Jul 2014 13:45

AW: Variable mittels INSERT in die DB speichern?
 
Ist es denn wirklich so schwer oder stehe ich gerade einfach nur auf dem Schlauch?!

Delphi-Quellcode:
  query := Datenbank.PrepareSQL('INSERT INTO OGame (Koordinaten) VALUES (:Koordinaten1)');
  Datenbank.BindSQL(query,0,Koordinaten.Text);
  Datenbank.AddParamText( ':Koordinaten1', Koordinaten.Text );
  Datenbank.ExecSQL(query);
Kompiliert wird jetzt endlich erfolgreich! (DANKE!) jedoch meldet er beim Einlesen:

"Could not prepare SQL statement".

query:TSQLiteQuery;
Datenbank : TSQLiteDatabase ;
SQLTable : TSQLiteTable ;

:evil:

Grüße!

mkinzler 11. Jul 2014 13:53

AW: Variable mittels INSERT in die DB speichern?
 
Versuch mal:
Delphi-Quellcode:
  Datenbank.AddParamText( ':Koordinaten1', Koordinaten.Text );
  query := Datenbank.PrepareSQL('INSERT INTO OGame (Koordinaten) VALUES (:Koordinaten1)');
  Datenbank.BindSQL(query,0,Koordinaten.Text);
 
  Datenbank.ExecSQL(query);

BenneX 11. Jul 2014 14:11

AW: Variable mittels INSERT in die DB speichern?
 
Leider immer noch der gleiche Fehler :?

/e: Es ist doch unglaublich :lol: Ich habe den Quelltext jetzt aufgeräumt und unnötigen Mist erstmal weggelassen. Der SQL Fehler ist jetzt erstaunlicherweise auch weg, jedoch erstellt er nun wieder einen leeren Datensatz :lol::lol: also sind wir wieder beim Ursprungsproblem ...

Vielleicht siehst Du wo der Fehler liegt, wenn du den gesamten Quelltext siehst:

Delphi-Quellcode:
unit U_BenneXOGameTool;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, SQLiteTable3, Vcl.StdCtrls, Vcl.ExtCtrls;

type
  THauptoberflaeche = class(TForm)
    Ueberschrift: TPanel;
    Rahmen_Einlesefeld: TGroupBox;
    Spielername: TEdit;
    Koordinaten: TEdit;
    Metall: TEdit;
    Kristall: TEdit;
    Deuterium: TEdit;
    Einlesebutton: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure EinlesebuttonClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Hauptoberflaeche: THauptoberflaeche;
  Datenbank     : TSQLiteDatabase ;
  SQLTable       : TSQLiteTable    ;
  query           :TSQLiteQuery;

  Datenbankdatei : String          ;

implementation

{$R *.dfm}

procedure THauptoberflaeche.EinlesebuttonClick(Sender: TObject);
begin

  Datenbank.ExecSQL('DROP TABLE OGame');
  Datenbank.ExecSQL('CREATE TABLE OGame ([Koordinaten] STRING)');

  Datenbank.AddParamText( ':Koordinaten1', Koordinaten.Text );
  query:=Datenbank.PrepareSQL('INSERT INTO OGame (Koordinaten) VALUES (:Koordinaten1)');
  Datenbank.BindSQL(query,0,Koordinaten.Text);
  Datenbank.ExecSQL(query);

end;

procedure THauptoberflaeche.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin

  Datenbank.Free;

end;

procedure THauptoberflaeche.FormCreate(Sender: TObject);
begin

  // Datenbank im Programmordner erstellen
  Datenbankdatei := ExtractFilePath(Application.ExeName) + 'OGame.db';
  Datenbank     := TSQLiteDatabase.Create(Datenbankdatei)          ;

end;

end.
DROP TABLE ist nur solange drin, bis ich eine Abfrage eingebaut habe die überprüft ob es die Datenbank schon gibt.
Ich danke Dir auf jeden Fall jetzt schon für deine Mühe!

BenneX 12. Jul 2014 16:10

AW: Variable mittels INSERT in die DB speichern?
 
Ich habe jetzt herausgefunden, dass wenn ich aus
Delphi-Quellcode:
Datenbank.BindSQL(query,0,Koordinaten.Text);
ein
Delphi-Quellcode:
Datenbank.BindSQL(query,1,Koordinaten.Text);
mache und er mir bspw. das Wort 'test' eingtragen soll er mir zumindest 't.e.' einspeichert. Zufall ausgeschlossen.

Woran könnte das liegen? Hilft uns das irgendwie weiter das Problem zu lösen?

Viele Grüße,
BenneX

BenneX 17. Jul 2014 12:10

AW: Variable mittels INSERT in die DB speichern?
 
Eine Umklammerung mittels BeginTransaction und Commit führte leider auch nicht zu dem gewünschten Ergebnis, somit gehe ich jetzt den unsicheren Weg über "'+ +'". Grüße!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr.
Seite 3 von 3     123   

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