AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Hilfe zu Synopse SQLite3
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe zu Synopse SQLite3

Ein Thema von AnCorr · begonnen am 16. Mai 2010 · letzter Beitrag vom 17. Mai 2010
Antwort Antwort
Seite 2 von 2     12   
AnCorr

Registriert seit: 15. Mär 2010
45 Beiträge
 
#11

Re: Hilfe zu Synopse SQLite3

  Alt 16. Mai 2010, 22:59
Hallo Luckie

Ja, das habe ich schon probiert.
Da erhalte ich schon von der IDE die Fehlermeldung, dass die Typen TSQLRest (das ist die Datenbank - Database) und TSQLHandle (das wird von der Funktion erwartet) inkompatibel sind.

Gruss
AnCorr
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Hilfe zu Synopse SQLite3

  Alt 16. Mai 2010, 23:12
Aber TSQLRestServerDB.Create klingt auch nicht, als ob man damit eine Verbindung zur Datenbank aufbauen würde. Du musst doch irgendwo eine Connect-Methode haben. Zeige doch mal deinen ganzen Code.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
AnCorr

Registriert seit: 15. Mär 2010
45 Beiträge
 
#13

Re: Hilfe zu Synopse SQLite3

  Alt 16. Mai 2010, 23:37
Hallo Luckie

Bisher habe ich mit dem Framework nur eine Datenbank erstellt.
Das war auch nicht so schwer, da es hier zum Glueck ein paar kleine Beispiele gab.
Allerdings haben die Beispiele maximal einen Datensatz ausgelesen. Das ist auch nicht so schwer.
Moechte man aber einen etwas 'komplexeren' SQL Befehl absetzen, dann wird es 'etwas' komplizierter. Und hierzu gibt es keinerlei Beispiele etc.

Den ganzen Code hier einzubringen, waere etwas zu umfangreich, da allein die 'Hauptunit' etwa 3600 Zeilen hat.
Ich haenge mal die SQLite3.pas und SQLite3Commons.pas aus dem Framework an. Ueber diese soll ja alles laufen. Das Framework besteht noch aus viel mehr 'Teilen', aber davon benoetige ich fuer meine Zwecke nur diese beiden.
Das Erstellen einer Datenbank laeuft etwa so ab:

Delphi-Quellcode:
var
  Database: TSQLRest; // Database object Synopse SQLite3
  Mp3Model: TSQLModel; // 'Model' for database
begin
  Mp3Model := CreateMp3Model;
  Database := TSQLRestServerDB.Create(Mp3Model, MediaPath);
  TSQLRestServerDB(Database).CreateMissingTables;
  ...
  //Hinzufuegen von Daten in die Datenbank
  ...
  Database.Free;
  Mp3Model.Free;
end;
Da ich das Einlesen bisher mit dem Framework nicht hinbekommen habe, habe ich hierzu einen Wrapper fuer die sqlite3.dll genutzt.
Da ich aber auch weiss, dass es mit dem Framework auch geht (gehen muss), moechte und koennte ich somit auf die sqlite3.dll verzichten. Deshalb habe ich dieses Thema hier erstellt.


Gruss
Micha
Angehängte Dateien
Dateityp: pas sqlite3commons_197.pas (594,8 KB, 5x aufgerufen)
Dateityp: pas sqlite3_202.pas (125,8 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Hilfe zu Synopse SQLite3

  Alt 17. Mai 2010, 09:10
Auf die Dll wirst du wohl nicht verzichten könne, da sie auch das eigentliche "DBMS" enthält.
Gibt es kein Beispiel des Herstellers des Framworks?
Markus Kinzler
  Mit Zitat antworten Zitat
AnCorr

Registriert seit: 15. Mär 2010
45 Beiträge
 
#15

Re: Hilfe zu Synopse SQLite3

  Alt 17. Mai 2010, 12:36
Hallo mkinzler

Doch, die DLL wird nicht benoetigt, wenn man das Framework einsetzt. Das Framework ist vollstaendig in Delphi geschrieben, und hat den gleichen (oder groesseren) Umfang wie die DLL.

Die verfuegbaren Beispiele sind fuer 'meine Belange' leider nicht brauchbar, da sie nur die 'einfachsten' Funktionen zeigen.
Mittlerweile bin ich mit dem Autor des Frameworks in Kontakt. Leider hat er es bisher nicht geschafft, mir mal ein passendes und funktionierendes Beispiel zu liefern.
Mal sehen, vielleicht klappt's ja noch.

Gruss
AnCorr
  Mit Zitat antworten Zitat
AnCorr

Registriert seit: 15. Mär 2010
45 Beiträge
 
#16

Re: Hilfe zu Synopse SQLite3

  Alt 17. Mai 2010, 23:41
Hallo zusammen

Ich habe mein Problem nun endlich zusammen mit dem Entwickler des Frameworks loesen koennen.
Der Thread kann somit geschlossen werden.

Vielen Dank fuer die rege Teilnahme und den Versuchen mir zu helfen.
Mit dem gewonnenen Wissen kann ich nun auf den Einsatz der 'sqlite3.dll' verzichten.

Sollte sich jemand dafuer interessieren, hier ist der Link dazu:
Synopse SQLite3 Framework

Vielleicht kann ich ja dann dem einen oder anderen auch einmal helfen.


Gruss
AnCorr

Hier ein kleines Testprogramm:
Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mp3Data, SQLite3Commons, SQLite3;

type
  TMainform = class(TForm)
    Ed_DBPath: TEdit;
    Btn_Open: TButton;
    Btn_List: TButton;
    Odlg_DB: TOpenDialog;
    Lb_Result: TListBox;
    procedure Btn_ListClick(Sender: TObject);
    procedure Btn_OpenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Mainform: TMainform;

   MediaPath: String;
  
implementation

{$R *.dfm}

procedure TMainform.Btn_OpenClick(Sender: TObject);
begin
   if Odlg_DB.Execute then
  begin
    if Odlg_DB.FileName <> 'then
    begin
       MediaPath := Odlg_DB.FileName;
      Ed_DBPath.Text := MediaPath;
    end;
  end;
end;

procedure TMainform.Btn_ListClick(Sender: TObject);
var
  Client: TSQLRestClient;
  Table: TSQLTable;
  Mp3Model: TSQLModel; // 'Model' for database
  Mp3Record: TSQLMp3Record; // Record for database

begin
  if MediaPath <> 'then
  begin
    Mp3Model := TSQLModel.Create([TSQLMp3Record], 'root');
    Mp3Record := TSQLMp3Record.Create;
    Client := TSQLRestClientDB.Create(Mp3Model, MediaPath);
    Table := Client.List([TSQLMp3Record], '*', 'Genre = "Asian Music"');
    if Table <> nil then // = nil on any error
    try
      Mp3Record.FillPrepare(Table);
      while Mp3Record.FillOne do
      begin
        Lb_Result.Items.Add(Mp3Record.Title);
      end;
    finally
      Table.Free;
    end;

    Mp3Model.Free;
    Mp3Record.Free;
  end;
end;

end.
Die Unit 'Mp3Data' definiert einen Record und eine Funktion zum Erzeugen.
Delphi-Quellcode:
unit Mp3Data;

interface

uses
  SQLite3Commons;

type

  TSQLMp3Record = class(TSQLRecord)
  private
    fPath: RawUTF8;
    fFilename: RawUTF8;
    fTitle: RawUTF8;
    fArtist: RawUTF8;
    fAlbum: RawUTF8;
    fGenre: RawUTF8;
    fTrack: RawUTF8;
    fYear: RawUTF8;
    fBitrate: RawUTF8;
    fSampleRate: RawUTF8;
    fDuration: RawUTF8;

  published
    property Path: RawUTF8 read fPath write fPath;
    property Filename: RawUTF8 read fFilename write fFilename;
    property Title: RawUTF8 read fTitle write fTitle;
    property Artist: RawUTF8 read fArtist write fArtist;
    property Album: RawUTF8 read fAlbum write fAlbum;
    property Genre: RawUTF8 read fGenre write fGenre;
    property Track: RawUTF8 read fTrack write fTrack;
    property Year: RawUTF8 read fYear write fYear;
    property Bitrate: RawUTF8 read fBitrate write fBitrate;
    property SampleRate: RawUTF8 read fSampleRate write fSampleRate;
    property Duration: RawUTF8 read fDuration write fDuration;
  end;

function CreateMp3Model: TSQLModel;

implementation

function CreateMp3Model: TSQLModel;
begin
  Result := TSQLModel.Create([TSQLMp3Record]);
end;

end.
Aus dem Framework werden fuer das kleine Programm nur folgende Dateien benoetigt:
sqlite3.obj
sqlite3.pas
sqlite3commons.pas
sqlite3fts3.obj
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:52 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