AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme mit TQuery und Records als Blob
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TQuery und Records als Blob

Ein Thema von sandrocm · begonnen am 5. Apr 2008 · letzter Beitrag vom 7. Apr 2008
Antwort Antwort
sandrocm

Registriert seit: 27. Okt 2003
27 Beiträge
 
#1

Probleme mit TQuery und Records als Blob

  Alt 5. Apr 2008, 12:30
Datenbank: Firebird • Version: 1.5 • Zugriff über: TQuery
Hallo ich habe einen Record mit mehrern Unterpunkten:

TIMTBild= record
Bildid:integer;
Bildfile,Bildpath,Bildnummer:string;
BildFileszuladen:Tlistestring;
Savepfad:string;
Savefile:string;
AusschnittXvon,AusschnittXbis:TListe;
AusschnittYvon,AusschnittYbis:TListe;
ROIlength:TListereal;
ROIBezeichnung:TListestring;
MainAusschnitt,LaengeAusschnitt:integer;
avi,bmpseq,bmpimage:boolean;
lokalisation:integer;
manualroi:real;
leftx,rightx,topx,bottomx,bildlaengeUltraschall:re al;
pixelsize:real;
laengesequenz:integer;
bildwidth,bildlength:real;
imgShown:integer;
AnzeigeNearWallIntima,AnzeigeFarWallIntima,Anzeige FarWallAdventitia:boolean;
IMTvalue:array of TIMT;
Seq:array of TSeq;
Chart:TChartview;
correctdetectedimg:integer;
init:Tinitalize;
end;

Wenn ich die Daten speichern möchte, lese ich zu jedem Record die einzelnen Unterpunkte aus und speichere sie jeweils für sich.
Wenn ich dann die Daten wieder einlade, setze ich eben jedes Einzelne Teil wieder zusammen und habe so meinen Record wieder.

Einziges Problem, ich langweile mich fast zu tode wenn ich den Record speichere bzw lade... Dauer so 10 Sekunden pro Record beim Speichern in Firebird...

Ich habe jetzt ein bisschen rum gesucht und habe ein paar Hinweise gefunden, das einen Record auch einfach komplett als Record speichern kann bzw den Record in einen Blob speichern kann?

Kann mir da jemand weiter helfen? Wäre super...

P.S. Ich greife auf die Datenbank mit einem TQuery zu...

Danke im Vorraus
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Probleme mit TQuery und Records als Blob

  Alt 6. Apr 2008, 21:29
Hallo,

> Einziges Problem, ich langweile mich fast zu tode wenn ich den Record speichere bzw lade...
> Dauer so 10 Sekunden pro Record beim Speichern in Firebird...

und was erwartest du jetzt ?

Ohne Quellcode ist das nur Rätselraten.

So auf's blaue

prepared Queries benutzt du nicht ?


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Probleme mit TQuery und Records als Blob

  Alt 7. Apr 2008, 08:02
Ich vermute auch es ist der zeitaufwand umd den record (der ja wieder aus verschiedenen Strukturen (Listem komponenten, ...) besteht zu zerlegen in Inserts zu verwandeln und später das ganze umgekehrt.
Hier würde sich ein Blob sehr anbieten.
http://mc-computing.com/Databases/De...ird/Blobs.html
http://www.delphi-library.de/topic_+...ern_12042.html
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Probleme mit TQuery und Records als Blob

  Alt 7. Apr 2008, 08:30
Hallo,

die Frage ist ja, braucht er die einzelnen Daten
eigenständig, muss also danach gesucht werden können.
Wenn nicht, geht auch ein Blob.


Heiko
Heiko
  Mit Zitat antworten Zitat
sandrocm

Registriert seit: 27. Okt 2003
27 Beiträge
 
#5

Re: Probleme mit TQuery und Records als Blob

  Alt 7. Apr 2008, 17:33
Sorry falls ich nicht genug mein Problem beschrieben habe.

Ich möchte grad nicht die Informationen einzeln zerlegen und denke das ein Blob das optimale wäre.

Aber wie speichere ich ein Record wie oben angegeben in einen Blob mit einem Query? Ich habe schon mal ein bisschen im Netz gesucht, aber keinen Code dazu gefunden. Ein Hinweis nur würde helfen.

Ziel: Record mit Blob über TQuery in Blob und wieder zurück?

Wie geht das... Vielleicht ist das eine zu triviale Frage, aber bei mir hängt es grad sorry

Gruss Markus
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Probleme mit TQuery und Records als Blob

  Alt 7. Apr 2008, 19:16
Hallo,

hier 2 meiner Routinen


Heiko

Delphi-Quellcode:

{
name:
  UpdateTextBlobField_Ex
usage:
  update a blob field
parameter:
  theTableName      - table name
  thePrimaryKeyName  - name of the primary key
  thePrimaryKeyValue - value of the primary key
  theFieldName      - field name of the blob field
  theText            - field value
return parameter:
  theErrorStr - error message
return:
  false on error
notes:
  - additional to UpdateTextBlobField name of the
    primary key is needed
}

function UpdateTextBlobField_Ex(const theTableName: String;
  const thePrimaryKeyName: String; thePrimaryKeyValue: Integer;
  const theFieldName: String; const theText: String;
  var theErrorStr: String): Boolean;
var
  FQuerySQL : TQuery;
begin
  Result:= False;
  theErrorStr:= S_internal_error;

  try
    FQuerySQL := CreateQuery; // TQuery.Create ...
    try
      with FQuerySQL do
      begin
        DataBaseName:= C_ALIASNAME; // Konstante

        SQL.Add('Update '+theTableName+' Set ');
        SQL.Add(theFieldName+'=:'+theFieldName);
        SQL.Add('Where '+thePrimaryKeyName+'=:Id');
        ParamByName('Id').AsInteger:= thePrimaryKeyValue;
        if theText='then
        begin
          ParamByName(theFieldName).DataType:= ftBlob;
          ParamByName(theFieldName).Clear;
          ParamByName(theFieldName).Bound:= True;
        end
        else
        begin
          ParamByName(theFieldName).AsBlob:= theText;
        end;
        ExecSQL;
      end; { with FQuerySQL do }

      Result:= True;
    finally
      FQuerySQL.Free;
    end;
  except
    on E: Exception do theErrorStr:= E.message;
  end;
end; { UpdateTextBlobField_Ex }

{
name:
  LoadTextBlobField_Ex
usage:
  load the text from the blob field
parameter:
  theTableName      - table name
  thePrimaryKeyName  - name of the primary key
  thePrimaryKeyValue - value of the primary key
  theFieldName      - field name of the blob field
return parameter
  theText            - the loaded field value
  theErrorStr        - error message
return:
  false on error
notes:
  - additional to LoadTextBlobField name of the
    primary key is needed
}

function LoadTextBlobField_Ex(const theTableName: String;
  const thePrimaryKeyName: String; thePrimaryKeyValue: Integer;
  const theFieldName: String; var theText: String;
  var theErrorStr: String): Boolean;
var
  FQuerySQL : TQuery;
  StringStream : TStringStream;
  Stream : TStream;
  bOK : Boolean;
begin
  bOK:= False;

  theErrorStr:= S_internal_error;

  theText:= '';

  try
    FQuerySQL := CreateQuery; // TQuery.Create ...
    StringStream := TStringStream.Create('');
    try
      with FQuerySQL do
      begin
        SQL.Add('Select '+theFieldName+' From '+theTableName);
        SQL.Add('Where '+thePrimaryKeyName+'=:Id');
        ParamByName('Id').AsInteger:= thePrimaryKeyValue;
        Open;
        try
          if QueryIsNotEmpty then
          begin
            Stream:= CreateBlobStream(FieldByName(theFieldName),bmRead);
            try
              StringStream.CopyFrom(Stream,0);
            finally
              Stream.Free;
            end;

            theText:= StringStream.DataString;

            bOK:= True;
          end;
        finally
          Close;
        end;
      end; { with FQuerySQL do }
    finally
      FQuerySQL.Free;
      StringStream.Free;
    end;
  except
    on E: Exception do
    begin
      theErrorStr:= E.message;
    end;
  end;

  Result:= bOK;
end; { LoadTextBlobField_Ex }
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:05 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