![]() |
Delphi-Version: 5
Klasse die mit DB verbindet erstellen?
Hallo,
ich möchte mich mehr mit Klassen bzw. Objekten beschäftigen und schreibe gerade eine Klasse, die meine Anwendung mit der SQLite DB verbinden soll. Aber irgendwie habe ich noch eine Wissenslücke. Die Variablen "SQLite3Connection", "SQLTransaction", "SQLQuery" wollen nicht createt werden. Der Fehler lautet: Zitat:
Delphi-Quellcode:
unit myobj;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, sqlite3conn, sqldb; type { TSQLiteDB } TSQLiteDB = class procedure Connect; end; var SQLiteDB: TSQLiteDB; SQLite3Connection: TSQLite3Connection; SQLTransaction: TSQLTransaction; SQLQuery: TSQLQuery; implementation { TSQLiteDB } procedure TSQLiteDB.Connect; begin SQLite3Connection := TSQLite3Connection.Create(Self); SQLTransaction := TSQLTransaction.Create(Self); SQLQuery := TSQLQuery.Create(Self); try SQLite3Connection.DatabaseName := ExtractFilePath(Application.ExeName) + 'db.db'; SQLite3Connection.Params.Add('foreign_keys=on;'); SQLTransaction.DataBase := SQLite3Connection; SQLQuery.Transaction := SQLTransaction; except end; end; end. |
AW: Klasse die mit DB verbindet erstellen?
TSQLite3Connection.Create erwartet als Übergabeparameter ein TComponent oder eine von TComponent abgeleitete Klasse.
Du kannst das Create auch mit nil aufrufen, musst dich aber dann selbst um die Freigabe kümmern. |
AW: Klasse die mit DB verbindet erstellen?
Ok... ist es eigentlich ok, wenn ich das wie folgt mache? Muss ich dann "TSQLiteDB.Create;" und "TSQLiteDB.Destroy;" manuell aufrufen, oder geht das automatisch?
Bekomme noch diese Warnung, was heißt sich eigentlich? Zitat:
Delphi-Quellcode:
{ TSQLiteDB }
TSQLiteDB = class constructor Create; destructor Destroy; procedure Connect; end; var SQLiteDB: TSQLiteDB; SQLite3Connection: TSQLite3Connection; SQLTransaction: TSQLTransaction; SQLQuery: TSQLQuery; implementation { TSQLiteDB } constructor TSQLiteDB.Create; begin SQLite3Connection := TSQLite3Connection.Create(nil); SQLTransaction := TSQLTransaction.Create(nil); SQLQuery := TSQLQuery.Create(nil); end; destructor TSQLiteDB.Destroy; begin SQLite3Connection.Free; SQLTransaction.Free; SQLQuery.Free; end; |
AW: Klasse die mit DB verbindet erstellen?
Delphi-Quellcode:
constructor TSQLiteDB.Create;
begin inherited; SQLite3Connection := TSQLite3Connection.Create(nil); SQLTransaction := TSQLTransaction.Create(nil); SQLQuery := TSQLQuery.Create(nil); end; destructor TSQLiteDB.Destroy; begin SQLite3Connection.Free; SQLTransaction.Free; SQLQuery.Free; inherited; end; |
AW: Klasse die mit DB verbindet erstellen?
Aber muss ich irgendwo
Zitat:
Zitat:
|
AW: Klasse die mit DB verbindet erstellen?
Ja oder in der Unit (initialization bzw. finalization)
|
AW: Klasse die mit DB verbindet erstellen?
Zitat:
Delphi-Quellcode:
Hier stürzt das Programm beim Schließen ab. :gruebel:
procedure TForm1.FormCreate(Sender: TObject);
begin SQLiteDB.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin SQLiteDB.Destroy; end; |
AW: Klasse die mit DB verbindet erstellen?
In der Unit, in welcher Du die Klasse deklarierst.
Btw. warum kein Datenmodul? |
AW: Klasse die mit DB verbindet erstellen?
Zitat:
|
AW: Klasse die mit DB verbindet erstellen?
Der initialization Abschnitt einer Unit wird beim Laden der Unit ( Einbinden in uses einer anderen Unit) automatisch aufgerufen und der finalization Abschnitt beim Entladen (Programmende).
Ein Datenmodul ist ein spezielels Formular für nicht sichtbare Komponenten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr. |
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