AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bilder in DB erzeugt ORA-22275
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder in DB erzeugt ORA-22275

Ein Thema von kama · begonnen am 27. Feb 2004 · letzter Beitrag vom 26. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
kama

Registriert seit: 27. Feb 2004
5 Beiträge
 
#1

Bilder in DB erzeugt ORA-22275

  Alt 27. Feb 2004, 08:52
Hallo,

ich möchte mit folgernder procedure Bilder in eine DB schieben.
Ich benutze Delphi 6 Ent. und eine Oracle 8i DB. Die Tabelle hat folgendes Format:

SQL-Code:
create table BILDER
(
  BILDNAME VARCHAR2(50) not null,
  BILDBINARY BLOB
)
Mit der auskommentierten Zeile lief es zwar, aber mache Bilder waren zum Teil
kaputt oder Farbverfälscht. Nun habe ich gelesen, daß ftOraBlob speziel für Oracle 8 Tabellen ist.
Ich bekomme da aber eine Fehlermeldung 'ORA-22275: invalid LOB locator specified'.

Irgendwo habe ich gelesen, daß ich erst einen Lob Locator öffnen muß, aber wie ?

Gruss Karsten

Delphi-Quellcode:
procedure TForm1.mnuLoadClick(Sender: TObject);
var
  Jpg : TJpegImage;
  Stream : TMemoryStream;
  FileExt : string;
begin
  if dlgOpenPicture.Execute then begin
    Jpg := nil;
    Stream := nil;
    try
      Stream := TMemoryStream.Create;
      Jpg := TJpegImage.Create;
      Jpg.LoadFromFile( dlgOpenPicture.FileName );
      Image1.Picture.Assign( Jpg );
      Jpg.SaveToStream( Stream );
      Stream.Position := 0;
// Query1.ParamByName( 'PBildBinary' ).LoadFromStream( Stream, ftBlob );
      Query1.ParamByName( 'PBildBinary' ).LoadFromStream( Stream, ftOraBlob );
      Query1.ParamByName( 'PBildname' ).AsString := ExtractFilename( dlgOpenPicture.FileName );
      Query1.Prepare;
      Query1.ExecSQL;
    except
      jpg.Free;
      Stream.Free;
      raise;
    end;
    jpg.Free;
    Stream.Free;
  end;
end;
[edit=sakura] [sql]-Tags. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Bilder in DB erzeugt ORA-22275

  Alt 27. Feb 2004, 10:45
Da du Oracle verwendest kann ich dir nur Direct Oracle Access empfehlen.
Nachdem du das Package einmal verwendet hast läuft es dir eiskalt den Rücken runter, wenn du mit ADO oder sonstwas auf eine DB zugreifen musst.
Da es sich dabei um eine Enkapselung der API des OracleClients handelt (OCI), wird bei jeder OraVersion der richtige API-Befehl genutzt. (seit 7.3 werden alle Versionen komplett ünterstützt)

Der LOB-Locator ist eine Referenz auf die physische Position des LOB-Feldes im Tablespace. Keine Ahnung, wie du den in ADO bekommst...
  Mit Zitat antworten Zitat
kama

Registriert seit: 27. Feb 2004
5 Beiträge
 
#3

Re: Bilder in DB erzeugt ORA-22275

  Alt 27. Feb 2004, 10:58
Ich benutze nicht ADO sondern gehe noch ganz konventionell über die BDE
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Bilder in DB erzeugt ORA-22275

  Alt 27. Feb 2004, 11:17
BDE & Oracle ??? -> Das ist keine sehr gute Idee. (bitte nicht falsch auffassen )
Mit der BDE bist du einfach nicht in der Lage die Vorteile von Oracle nutzen zu können. Da könntest du ja auch gleich mySQL nutzen (wäre dann auch günstiger).
Seit Oracle 8 hat sich sehr viel verändert. Sogar dein 8i ( ist es 8.16 oder 8.17 ? ) hat sehr viele neue Features bekommen.
Da die BDE nicht mehr weiterentwickelt wird, kann da vieles einfach nicht mehr richtig funktioieren.

DOA kann alles was Oracle kann (bei Oracle 10 fast alles), und das so logisch und übersichtlich, dass ich jedesmal Mitleid bekomme, wenn ich hier ADO/BDE-Code sehe.

Ich kann z.Bsp. eine geöffnete TOracleQuery an einen Ref Cursor in einem anonymen Block übergeben, der den Cursor weiter nutzen kann ohne, dass ein neuer geöffnet werden muss (das funktioniert auch andersherum)!
Es gibt sogar die Möglichkeit Session-pooling zu simulieren - auch ohne Oracle9i!!!

Ich wollte jetzt hier keine große Werbeaktion starten, aber die 229€ hast du allein an Arbeitszeit/Nerven in sehr kurzer Zeit wieder wett gemacht.
  Mit Zitat antworten Zitat
kama

Registriert seit: 27. Feb 2004
5 Beiträge
 
#5

Re: Bilder in DB erzeugt ORA-22275

  Alt 27. Feb 2004, 12:57
Ich betreue hier historisch gewachsene Delphi Applicationen, die z.T sogar noch von Delphi 2 her kommen.
Und mit ADO (nicht DOA) habe ich keine so guten Erfahrungen gemacht ....
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Bilder in DB erzeugt ORA-22275

  Alt 27. Feb 2004, 13:18
Um ein LOBFeld in die DB zuschreiben (INSERT, bei UPDATE hast du ja schon den Locator) musst erst mit Hilfe des Clients ein Locator auf einen leeren LOB geholt werden. Vorsicht ein leerer LOB ist kein "null" LOB!

Diese Art des Zugriffs auf LObs unterscheidet sich von der anderer DBs, deshalb glaube ich nicht, dass die alte BDE das bei neueren Oracle Versionen einwandfrei schafft.

p.s.:Ist es vielleicht möglich, dass TJpegImage ein paar kleine Fehlerchen hat?
Wenn du das Bildchen unkomprimiert (.bmp) in die DB schreibst, könntest du das ja testen.
  Mit Zitat antworten Zitat
kama

Registriert seit: 27. Feb 2004
5 Beiträge
 
#7

Re: Bilder in DB erzeugt ORA-22275

  Alt 27. Feb 2004, 13:27
Bei bmp bekommen ich zwar "ganze" Bilder aber Farbverfälschungen ... aber auch nicht immer

Und zu BDE in der Hilfe steht:
ftOraBlob BLOB-Felder in Oracle 8-Tabellen

also scheint das explizit dafür zu sein.

Meine Frage ist nur, wie bekommen ich den leeren Blob-Locator ?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Bilder in DB erzeugt ORA-22275

  Alt 27. Feb 2004, 14:09
Wenn du mir erklärst, wie mit der BDE auf Oracle komme, könnte ich dir helfen.

Nachtrag:
Wie ich mit der BDE auf Oracle komme weiß ich immmer noch nicht...
Ich versteh das Ding irgendwie nicht, wie kann ich dieser TDataBase klar machen mit welchem Passwort sie die Anmeldung machen soll
  Mit Zitat antworten Zitat
kama

Registriert seit: 27. Feb 2004
5 Beiträge
 
#9

Re: Bilder in DB erzeugt ORA-22275

  Alt 2. Mär 2004, 07:30
Du mußt im TDataBase bei Params folgendes eintragen

PATH=\\.......
SERVER NAME= ......
USER NAME=YXZ
PASSWORD=XYZ
  Mit Zitat antworten Zitat
baxi

Registriert seit: 26. Jul 2004
1 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: Bilder in DB erzeugt ORA-22275

  Alt 26. Jul 2004, 10:12
Hallo zusammen

versuch es einmmal anstelle von einen BLOB Feld mit einem LONG RAW Feld in Oracle.
Dieses sollte besser funktionieren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:43 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