Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi In SQLite Integer-Wert schreiben? (https://www.delphipraxis.net/177846-sqlite-integer-wert-schreiben.html)

AlexII 30. Nov 2013 20:26

Datenbank: SQLite • Version: 3 • Zugriff über: SQLiteSimpleDelphi-Wrappers von Tim Anderson

In SQLite Integer-Wert schreiben?
 
Hallo,

ich schreibe wie folgt in meine SQLite DB:

Delphi-Quellcode:
procedure TForm3.AddNewStation();
var
  dbFile: String; // DB Verzeichniss
  db: TSQLiteDatabase; // Klasse
  sSQL: String;
  f: Integer;
begin
  dbFile := ExtractFilePath(Application.ExeName) + 'Stations.db';
  db := TSQLiteDatabase.Create(dbFile);

  // Prüfen, ob Station favorit oder nicht
  if FavoriteCheckBox.Checked then
  f:=1 else f:=0;

    try

    // Transaktion beginnt
    db.BeginTransaction;

    // Tabelle allStations füllen
    sSQL := 'INSERT INTO allStations(aName, aStreamURL, aWebsiteURL, aScheduleURL, aFavorite, aFixed, aInfo, ';
    sSQL := sSQL + 'fk_language_id, fk_category_id) VALUES ("' + Trim(StationNameLEdit.Text) + '",';
    sSQL := sSQL + '"' + Trim(StreamURLLEdit.Text) + '",';
    sSQL := sSQL + '"' + Trim(StationWebsiteLEdit.Text) + '",';
    sSQL := sSQL + '"' + Trim(StationProgramsLEdit.Text) + '",';
    sSQL := sSQL + '"' + IntToStr(f) + '",';
    sSQL := sSQL + '"' + IntToStr(0) + '",';
    sSQL := sSQL + '"' + InfoMemo.Text + '",';
    sSQL := sSQL + '"' + IntToStr(Integer(LanguageComboBox.Items.Objects[LanguageComboBox.ItemIndex])) + '",';
    sSQL := sSQL + '"' + IntToStr(Integer(CategoryComboBox.Items.Objects[CategoryComboBox.ItemIndex])) + '");';

    // Insert Befehl wird ausgeführt
    db.ExecSQL(sSQL);

    // Transaktion endet
    db.Commit;

  finally
    db.Free;
  end;
end;
Nun möchte ich die Variable f und die Fremdschlüssel in die DB als Integer-Wert speichern. Wie kann ich das mit diesem Vorgehen machen, wenn die ganze sSQL-Kette ein String ist?
Bin für jeden Tipp dankbar!

Volker Z. 30. Nov 2013 21:00

AW: In SQLite Integer-Wert schreiben?
 
Hallo,

ich gehe mal davon aus, dass die Felder als Integer angelegt sind; dann einfach die zu schreibenden Werte nicht quoten - also:
Code:
INSERT INTO tablename(intField, strField) VALUES(1, 'Text')
Gruß

AlexII 30. Nov 2013 21:06

AW: In SQLite Integer-Wert schreiben?
 
Das geht ja gerade nicht, da die Integer als sSQL-String an die DB übergeben werden.

Lemmy 30. Nov 2013 21:10

AW: In SQLite Integer-Wert schreiben?
 
nicht extra quoten:

Zitat:

Zitat von AlexII (Beitrag 1238016)

Delphi-Quellcode:
    sSQL := 'INSERT INTO allStations(aName, aStreamURL, aWebsiteURL, aScheduleURL, aFavorite, aFixed, aInfo, ';
    sSQL := sSQL + 'fk_language_id, fk_category_id) VALUES ("' + Trim(StationNameLEdit.Text) + '",';
    sSQL := sSQL + '"' + Trim(StreamURLLEdit.Text) + '",';
    sSQL := sSQL + '"' + Trim(StationWebsiteLEdit.Text) + '",';
    sSQL := sSQL + '"' + Trim(StationProgramsLEdit.Text) + '",';
    sSQL := sSQL + '"' + IntToStr(f) + '",';
    sSQL := sSQL + '"' + IntToStr(0) + '",';
    sSQL := sSQL + '"' + InfoMemo.Text + '",';
    sSQL := sSQL + IntToStr(Integer(LanguageComboBox.Items.Objects[LanguageComboBox.ItemIndex])) + ',';
    sSQL := sSQL + IntToStr(Integer(CategoryComboBox.Items.Objects[CategoryComboBox.ItemIndex])) + ');';

Texte müssen in den entsprechenden Quote-Zeichen " oder ' eingefasst werden. Zahlen eben nicht.

Grüße

AlexII 30. Nov 2013 21:21

AW: In SQLite Integer-Wert schreiben?
 
Hm... es will irgendwie nicht, egal wie... :gruebel:

Volker Z. 30. Nov 2013 21:29

AW: In SQLite Integer-Wert schreiben?
 
Hallo,

Zitat:

Zitat von AlexII (Beitrag 1238020)
Hm... es will irgendwie nicht, egal wie... :gruebel:

Geht es etwas genauer? Was will denn nicht? Wird nichts in die DB geschrieben? Oder liegt es an etwas anderem?

Gruß

AlexII 30. Nov 2013 21:35

AW: In SQLite Integer-Wert schreiben?
 
Der Compiler akzeptiert das hier nicht:

String:=String+String+Integer+String;

Egal wie ich Integer da quote ein Integer kann nicht in die String-Kette passen. Oder irre ich mich?

Volker Z. 30. Nov 2013 21:55

AW: In SQLite Integer-Wert schreiben?
 
Hallo,

Zitat:

Zitat von AlexII (Beitrag 1238024)
Der Compiler akzeptiert das hier nicht:

String:=String+String+Integer+String;?

Egal wie ich Integer da quote ein Integer kann nicht in die String-Kette passen. Oder irre ich mich?

Ich weiß ja nicht was Du genau machst, aber bei so etwas sollte der Compiler nicht meckern (außer ich hab da irgendwo eine Klammer o. ä. vergessen)
Delphi-Quellcode:
  sSQL := 'INSERT INTO allStations(aName, aStreamURL, aWebsiteURL, aScheduleURL, aFavorite, aFixed, aInfo, ' +
          'fk_language_id, fk_category_id) VALUES (' +
          QuotedStr (Trim(StationNameLEdit.Text)) + ',' +
          QuotedStr (Trim(StreamURLLEdit.Text)) + ',' +
          QuotedStr (Trim(StationWebsiteLEdit.Text)) + ',' +
          QuotedStr (Trim(StationProgramsLEdit.Text)) + ',' +
          IntToStr (f) + ',' +
          IntToStr (0) + ',' +
          QuotedStr (InfoMemo.Text) + ',' +
          IntToStr (Integer(LanguageComboBox.Items.Objects[LanguageComboBox.ItemIndex])) + ',' +
          IntToStr (Integer(CategoryComboBox.Items.Objects[CategoryComboBox.ItemIndex])) + ');';
und das SQL-Statement sollte auch ausgeführt werden.

Wenn Du uns zeigst was Du machst, dann kann Dir hier auch besser geholfen werden.

Gruß

Sir Rufo 30. Nov 2013 21:58

AW: In SQLite Integer-Wert schreiben?
 
Zitat:

Zitat von AlexII (Beitrag 1238024)
Der Compiler akzeptiert das hier nicht:

String:=String+String+Integer+String;

Egal wie ich Integer da quote ein Integer kann nicht in die String-Kette passen. Oder irre ich mich?

Aua.

Sowas muss als Text übergeben werden
SQL-Code:
insert into mytable ( strfld, intfld )
values ( "Text", 5 );
aber du produzierst das hier
SQL-Code:
insert into mytable ( strfld, intfld )
values ( "Text", "5" );
Was ist der Fehler?

AlexII 30. Nov 2013 22:02

AW: In SQLite Integer-Wert schreiben?
 
Ok das klappt, aber die int variable f wir bei mir zur str. Wenn ich aber die Umwandlung nach str weglasse, meckert der Compiler. Wie kann ich die int Variable ohne Umwandlug als int in die DB schreiben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr.
Seite 1 von 3  1 23      

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