DB:SQL-Lite

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

DB:SQL-Lite

Beitrag von pluto »

Hallo,
vor dem Updatet von Lazarus Version 0.9.22 auf 0.9.23 konnte ich in etwa so ein Datensatzt wechseln:

Code: Alles auswählen

sqlite3Dataset1.TableName:='root';
  sqlite3Dataset1.SQL:='select_from_ root';
  sqlite3Dataset1.Open;
  sqlite3Dataset1.RecNo:=1;


genau dies geht nicht mehr.
Sobald ich RecNo rein mache kommt eine Fehler Meldung im Ausgabe Fenster:
Segmentation fault (core dumped


ich vermute die Anwendung hängt sich auf !

Schreiben tue ich im übringen so:

Code: Alles auswählen

const
  TBF = ' (ID Text, data Text, CreateDate Text, CreateTime Text, ReadCount INTEGER, ChangeCount INTEGER)';
 
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  I:Integer;
  Data:TNotizint;
begin
  Sqlite3Dataset1.SQL:='create_table '+
                          '_root_' + TBF;
  Sqlite3Dataset1.ExecSQL;
 
  for i:=0 to 20 do begin
    Data.Caption:='Eintrag: ' + IntTostr(i);
    Data.ChangeCount:=0;
    Data.ReadCount:=0;
 
    Data.CreateDate:=Date;
    Data.CreateTime:=Time;
 
    Data.LastChangeDate:=Date;
    Data.LastChangeTime:=Time;
 
    Data.LastReadDate:=Date;
    Data.LastReadTime:=Time;
    Data.Password:='';
    Data.isMod:=True;
 
    Sqlite3Dataset1.SQL:='insert into root (ID, data, CreateDate, CreateTime, ReadCount, ChangeCount) values ("' + data.id+'","'+data.caption+'","'+DateToStr(data.CreateDate)+'","'+TimeToStr(data.CreateTime)+'",'+ IntTostr(Data.ReadCount)+','+IntTostr(Data.ChangeCount)+');';
    Sqlite3Dataset1.ExecSQL;
 end;
 
end;


Ich weiß einfach nicht was ich Falsch mache !
Wenn ich nex von SQLite3Datesetzt nutze die gleiche Fehler Meldung !
Wie kann ich den aktuellen Daten Satzt ändern ?

Ich habe mir schon ernsthaft überlegt ein eigens Format zu schreiben. Habe mir schon einige vielversrpechende Gedanken gemacht ! Das Problem wird ja wohl sein, das es in jeder Lazarus Version anders geht ! oder es liegt an mir das ich es noch nicht verstanden habe !
Habe bis jetzt noch nicht viel mit "echten" DB'S gemacht !(leider).

Aber für mein Akutuelles Projekt ist es leider eine Voraussetzung !

hier eine Kurzte Beschreibung was ich machen möchte:
Ich habe mir ein kleines Tool geschrieben mit der VST und ich nutze auch derend Speicher und Lade Funktionen um die Daten zu speichern. Das Tool selber soll einfach nur Notzien speichern. und dabei sollen die Notzien geordnet werden.

Alle meine Text Dateien sollen dort eines Tages rein kommen.
Auf Wunsch sollen sie auch verschlüsselt oder Komprimiert werden können.
(Das ist allerdings kein großes Problem)

Bitte keine Links zu Fertigen Programm geben, da sie mir entwerder nicht gefallen oder die Funktion die ich gerne hätte nicht haben.

Ich hoffe ich habe diesmal zum Problem eine Umfangreiche Frage geschrieben die jeder verstehen kann !
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Es gibt immer noch Probleme bei SQL Anweisungen ich habe jetzt einfach mal überall ein _ eingefügt- Also nicht wundern.

Komisch in anderen Foren gibt es keine Fehler !:
Sqlite3Dataset1.SQL:='create_table '+
'_root_' + TBF;
das mark er nicht anders
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

in Arbeit.

Gibt es deine RecNo vielleicht gar nicht - Hast du davor mal nen Count gemacht?
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ja ! es wird die richtige zahl zurück geben 21 !
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

hast du beachtet, das RecNo im Gegensatz zu Count glaube ich mit 0 anfängt, es also keine RecNo := 21 gibt ?
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

also mit 0 bekomme ich den Fehler das es außerhalb des Ranges liegt.
(Fehler: Record Number out of Range) wenn ich 0 angebe !
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

dann ist RecNo wol scheinbar nicht nullbasiert..hab ich mich wohl geirrt.

Hast du die SVN oder nen Snapshot?

Es könnte durchaus an der Version liegen, gerade bei datenbanken ist auch einige Bewegung in den Sourcen.

Bis auf dein falsches Select, weil die Feldangabe fehlt, müsste es aber gehen, und ich denk mal, in der APP hast nu Select * From ... oder so stehen.
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja habe ich drin

> Hast du die SVN oder nen Snapshot?
Gute frage ist glaube ich habe ein Snapshot gibt es da ein unterschied ?

Also müsste ich eine zweite Lazarus Version drauf habe von der 22 er oder wie ?
das ist aber nicht so schön !
und eine andere DB wollte ich auch nicht nutzen weil ich dann ein Server brauche oder wie läuft das dann ?

Was genau heißt das ?
muss auf mein Rechner jetzt ein MySql Server laufen bevor ich mit Lazarus MySql nutzen kann oder wie genau läuft das ?
(kann ja sein, das ich ein falsches Bild davon habe)
MFG
Michael Springwald

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

muss auf mein Rechner jetzt ein MySql Server laufen bevor ich mit Lazarus MySql nutzen kann


Wenn du dein Programm auch testen willst, dann wirst du um einen Server nicht herumkommen (Zugriff reicht, muß nicht unbedingt auf dem selben Rechner sein). Zum Kompilieren brauchst du die passende Client-Bibliothek.

knight

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Also niormaler Weise sollte man schon wissen, was man wann installiert hat und obs nen Installer/RPM/DEP war oder ob man es vor ein paar Stunden aus dem SVN ausgecheckt hat.
Du brauchst auch keine 22er zusätzlich, es kann halt höchstns sein, das in deiner Version gerade dort nen Fehler ist, also solltest du eventuell mal ne neuere/andere Probieren, oder noch nen zweites Testprojekt un das ganze einzugrenzen.


Fakt ist, bei deinem abrufen was oben steht ist bis auf das Selekt nichts auszusetzen.

Aber zu Datenbanken solltest du dich mal belesen, du brauchst keinen Datenbankserver der Permanent läuft. Frebird-embedded beispielsweise sind einige Dateien (der Server selbst ne dll und einige beötigte dlls und ne msg. Und die dll wird automatisch bei Bedarf als Server eingebunden.
Letztlich ist an SQLite ja aber nichts auszusetzen.
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Das finde ich schon blöd !

ich finde eine Anwendung muss sofort laufen. Nicht das ich erst 1000 sachen vorher installieren muss !

Darum wollte ich auch SQl-Lite nehmen, weil die ohne Server auskommt.
Und auf meine DB soll auch nur eine Person gleichzeitig zugreifen können.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

das ist nicht schlecht monta, evlt. teste ich gleich noch mal:
"Frebird-embedded", wenn der Server dort wirklich nicht Installiert sein muss, darum geht es mir ja...

Oder meint ihr es ist noch zu früh eine DB zu benutzen in Lazarus, weil sie sich noch ständig wieder ändern können ?

Meint ihr sowas währe mit eine XML Datei auch möglich was ich vor habe ?
auch mit vielen Daten sagen wir eine Datei von 5 GB ?

weil ich gehe davon aus das meine DB mit der Zeit größer wird. und Irgendwann auch größer als 5 GB sein könnte.
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Pluto, informier die ;)

Du musst bei ner embedded-DB nichts installieren, lediglich die Server-dll/so und eventuell ein zwei weitere Dateien müssen im selben Verzeichnis wie die exe liegen, mehr nicht.
(Theoretisch geht auch nen anderes Verzeichnis, aber dann musst du beispielsweise bei Firebird die .conf anpassen)

Generell muss ich sagen, wenn die Daten groß sind, wie Mediadaten, Dateien und ähnliches halte ich es für Sinnvoller, auf Grund der Performance nicht alles in die DB zu hauen und die Blobs voll zu fühlen, sondern Pfade zu speichern...aber das ist teilweise auch ne Glaubensfrage.
Aber ich denk mal auf 5GB wirst du nicht kommen.

Man kann schon gut DBs mit Firebird entwickeln, ich mahc ja auch nichts anderes ;)

Aber probier doch erstmal warum SQLite nicht geht, wenn du damit schon angefangen hast.
Zuletzt geändert von monta am Di 28. Aug 2007, 19:03, insgesamt 1-mal geändert.
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich weiß nicht genau wie ich das herraus finden könnte. Habe schon einige Tage damit verbracht den Fehler Zu finden.

Ich werde mal versuchen Firebird zu finden und zu Installiren.
MFG
Michael Springwald

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Ich habe mir schon ernsthaft überlegt ein eigens Format zu schreiben. Habe mir schon einige vielversrpechende Gedanken gemacht ! Das Problem wird ja wohl sein, das es in jeder Lazarus Version anders geht ! oder es liegt an mir das ich es noch nicht verstanden habe !
Habe bis jetzt noch nicht viel mit "echten" DB'S gemacht !(leider).

Aber für mein Akutuelles Projekt ist es leider eine Voraussetzung !

hier eine Kurzte Beschreibung was ich machen möchte:
Ich habe mir ein kleines Tool geschrieben mit der VST und ich nutze auch derend Speicher und Lade Funktionen um die Daten zu speichern. Das Tool selber soll einfach nur Notzien speichern. und dabei sollen die Notzien geordnet werden.

Alle meine Text Dateien sollen dort eines Tages rein kommen.
Auf Wunsch sollen sie auch verschlüsselt oder Komprimiert werden können.
(Das ist allerdings kein großes Problem)


@pluto Beschäftige dich da mit XML, das ist bei Lazarus an Bord und kommst ohne Server aus. Vor allen wenn du von MB-Großen DB redest und schon bei den Grundlagen von SQL-Servern leichten Informationsmangel zeigst.

Wenns du schon probierst, dann mache einmal ein RAD Ansatz mit grafischen Komponenten. Da siehst du wenigstens teilweise was du machst.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten