SQLite zur Laufzeit erstellen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
andone
Beiträge: 7
Registriert: Mi 28. Sep 2011, 23:42
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: 77694 Kehl

SQLite zur Laufzeit erstellen

Beitrag von andone »

Hallo zusammen,

ohne die Komponenten TSQLite3Connection, TSQLQuery, TSQLTransaction auf ein Formular zu ziehen möchte ich diese zu Laufzeit erstellen:

Code: Alles auswählen

uses
  Classes, SysUtils,
  Sqlite3DS, db, sqlite3conn, sqldb;
 
type
  TpmSQL = class
    pmSQLcon   : TSQLite3Connection;
    pmSQLQuery : TSQLQuery;
    pmSQLTrans : TSQLTransaction;
    constructor Create;
    destructor Destroy;
  private
 
  public
 
  end;
 
 
 
Var
 
    pmSQL : TpmSQL;
 
implementation
 
constructor TpmSQL.Create;
begin
  inherited; //Create;
 
  pmSQL.pmSQLcon.Transaction   := pmSQL.pmSQLTrans;
  pmSQL.pmSQLQuery.Transaction := pmSQL.pmSQLTrans;
  pmSQL.pmSQLTrans.DataBase    := pmSQL.pmSQLcon;
  pmSQL.pmSQLQuery.DataBase    := pmSQL.pmSQLcon;
 
end;
 
destructor TpmSQL.Destroy;
begin
  // .....
  inherited;
end;   


Aufrufen tu ich das Ganze so:

Code: Alles auswählen

 
pmSQL := TpmSQL.Create
 


leider kommt die Meldung SIGSEV wenn ich Versuche die Parameter bei Create zu setzen.

Weiß jemand wie das gehen könnte ?

Gruß, andone

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2635
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: SQLite zur Laufzeit erstellen

Beitrag von m.fuchs »

Du greifst im Contructor direkt auf die Instanz pmSQL, das solltest du nicht.

Dann benutzt du pmSQLTrans, pmSQLQuery und pmSQLcon ohne dass diese vorher erzeugt wurden.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: SQLite zur Laufzeit erstellen

Beitrag von mse »

Etwa so:

Code: Alles auswählen

 
unit main;
{$ifdef FPC}{$mode objfpc}{$h+}{$endif}
interface
uses
  Classes, SysUtils,
  Sqlite3DS, db, sqlite3conn, sqldb;
 
type
  TpmSQL = class
   public
    pmSQLcon   : TSQLite3Connection;
    pmSQLQuery : TSQLQuery;
    pmSQLTrans : TSQLTransaction;
    constructor Create;
    destructor Destroy; override;
  end;
 
 
 
Var
 
    pmSQL : TpmSQL;
 
implementation
 
constructor TpmSQL.Create;
begin
  inherited; //Create;
  pmSQLcon:= TSQLite3Connection.create(nil);
  pmSQLTrans:= TSQLTransaction.create(nil);
  pmSQLQuery:= TSQLQuery.create(nil);
  pmSQLcon.Transaction:= pmSQLTrans;
  pmSQLQuery.DataBase:= pmSQLcon;
 
end;
 
destructor TpmSQL.Destroy;
begin
  // .....
  inherited;
  pmSQLQuery.free();
  pmSQLTrans.free();
  pmSQLcon.free();
end;
 
end.
 

Ungeprüft!

andone
Beiträge: 7
Registriert: Mi 28. Sep 2011, 23:42
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: 77694 Kehl

Re: SQLite zur Laufzeit erstellen

Beitrag von andone »

Ach so geht das, Danke

andone

Antworten