AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi In SQLite Integer-Wert schreiben?
Thema durchsuchen
Ansicht
Themen-Optionen

In SQLite Integer-Wert schreiben?

Ein Thema von AlexII · begonnen am 30. Nov 2013 · letzter Beitrag vom 1. Dez 2013
Antwort Antwort
Seite 1 von 3  1 23      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 21:26
Datenbank: SQLite • Version: 3 • Zugriff über: SQLiteSimpleDelphi-Wrappers von Tim Anderson
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!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#2

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 22:00
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ß
Volker Zeller
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 22:06
Das geht ja gerade nicht, da die Integer als sSQL-String an die DB übergeben werden.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 22:10
nicht extra quoten:


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
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#5

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 22:21
Hm... es will irgendwie nicht, egal wie...
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#6

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 22:29
Hallo,

Hm... es will irgendwie nicht, egal wie...
Geht es etwas genauer? Was will denn nicht? Wird nichts in die DB geschrieben? Oder liegt es an etwas anderem?

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#7

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 22:35
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?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#8

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 22:55
Hallo,

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ß
Volker Zeller
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 22:58
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?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#10

AW: In SQLite Integer-Wert schreiben?

  Alt 30. Nov 2013, 23:02
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?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 16:40 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