SQLite zur Laufzeit erstellen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

SQLite zur Laufzeit erstellen

Beitragvon andone » 11. Jan 2018, 16:54 SQLite zur Laufzeit erstellen

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
andone
 
Beiträge: 7
Registriert: 28. Sep 2011, 22:42
Wohnort: 77694 Kehl
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon m.fuchs » 11. Jan 2018, 17:19 Re: SQLite zur Laufzeit erstellen

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
m.fuchs
 
Beiträge: 1960
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon mse » 11. Jan 2018, 17:27 Re: SQLite zur Laufzeit erstellen

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!
mse
 
Beiträge: 1949
Registriert: 16. Okt 2008, 09: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
Nach oben

Beitragvon andone » 12. Jan 2018, 06:55 Re: SQLite zur Laufzeit erstellen

Ach so geht das, Danke

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

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried