Announcement

Collapse
No announcement yet.

Images in ORACLE-DB schreiben/lesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Images in ORACLE-DB schreiben/lesen

    guten morgen allerseits,

    stunden der suche haben nichts gebracht!! soviel vorweg.
    deshalb hoffe ich auf kompetente hilfe hier.

    problem:
    1. oracle-db
    2. tabelle (B_ID NUMBER, B_PICTURE BLOB)

    wie bekomme ich per vb.net bilder in diese tabelle?

    sämtliche fundstücke im netz gehen in die richtung sql-server. ich bekomme die beispiele nicht auf oracle angepasst.

  • #2
    Google einfach mal nach "Oracle Blob ADO.NET" und du solltest genügend Beispiel finden.

    Comment


    • #3
      danke für den tip.

      hab nach langer suche und probieren einiger alternativen jetzt eine lösung für das schreiben gefunden. wen es interessiert, hier der link...

      http://support.microsoft.com/kb/322796/de

      für das auslesen und anzeigen eines blob hab ich auch einiges getestet, allerdings bleibt bei allen varianten die auf dem formular definierte pictureBox LEER
      versorge ich sie innerhalb visualstudio über die eigenschaften, werden bilder angezeigt.

      hier mal der code-teil, wo ich das BLOB auslese und anzeigen will:
      [highlight=vbnet]
      If Not oraDR!bt_image Is System.DBNull.Value Then
      Try
      Dim bytes() As Byte
      bytes = oraDR!bt_image
      Dim ms As IO.MemoryStream = New IO.MemoryStream(bytes)
      pbImage.Image = Image.FromStream(ms)
      pbImage.SizeMode = PictureBoxSizeMode.StretchImage
      pbImage.Refresh()
      Catch
      ShowMessage("Bild konnte nicht geladen/angezeigt werden")
      End Try
      End If
      [/highlight]

      Comment


      • #4
        Bedenke das der ADO.NET-Provider von MS ein abgekündigtes Produkt ist. Er wird also in Zukunft noch viel weniger für Produktiven Einsatz brauchbar sein als bisher.

        Comment


        • #5
          guten morgen zusammen,

          so, mein schreiben/lesen der images in/aus oracle-tabelle funktioniert jetzt. ein kleines formular wurde dafür realisiert. klappt bestens.

          jetzt der 2. schritt. gleiches soll mit PDF-dokumenten passieren.
          das schreiben einer per OpenFileDialog ausgewählten pdf-datei scheint auf gleichem weg wie das image zu funktiuonieren.

          aber ich finde für die vorschau des pdf-dokumentes irgendwie nicht das richtige control. PrintPreviewControl als beispiel versucht fehlanzeige.

          jemand vielleicht am frühen morgen einen tip für mich ??

          Comment


          • #6
            Also wenn du die Datei für die Du die Vorschau machen möchtest auf deinem Rechner hast, dann nimm doch das WebBrowser Control. Dast im im Endeffekt das Browserfenster des Internet Explorers und das erkennt eigentlich sämtliche gängigen Formate. Wenn Du Office installiert hast sogar das.
            Musst nur die URL auf den Pfad des anzuzeigenden Elements legen Etwa so in der Art:

            file://c:/Dokumente/MeinPDF.pdf

            Comment


            • #7
              Originally posted by fanderlf View Post
              Also wenn du die Datei für die Du die Vorschau machen möchtest auf deinem Rechner hast, dann nimm doch das WebBrowser Control. Dast im im Endeffekt das Browserfenster des Internet Explorers und das erkennt eigentlich sämtliche gängigen Formate. Wenn Du Office installiert hast sogar das.
              Musst nur die URL auf den Pfad des anzuzeigenden Elements legen Etwa so in der Art:

              file://c:/Dokumente/MeinPDF.pdf
              danke für die info.
              ich möchte aber, nachdem ich den select auf die oracle-db abgesetzt habe, die pdf-daten, die in einer BLOB-spalte abgelegt sind, DIREKT in einem entspr. control als preview anzeigen, analog zu den images eben.

              Comment


              • #8
                Tja, dann brauchst Du für jeden Typ von Dokument den Du hast ein eigenes Control.

                Du könntest ja auch die heruntergeladenen Dokumente im Anwendungsordner zwischenspeichern und diese dann per WebBrowser aufmachen. Herunterladen musst Du das Dokument sowieso um eine Vorschau anzuzeigen.

                Comment


                • #9
                  Warum der Weg über den Webbrowser?

                  Sinnvoller ist die Anzeige direkt mit dem im jeweiligen System vorhandenen Anzeigeprogramm für diese Dateiendung. Hier bsp. Adobereader oder Foxitreader.
                  Christian

                  Comment


                  • #10
                    das mit den unterschiedlichen controls wäre nicht das problem denke ich.

                    bei den images umgehe ich das zwischenspeichern, in dem ich den den eingelesenen FileStream direkt an die picturebox übergebe. funktioniert einwandfrei.

                    das zwischenspeichern ist halt keine option für mich.
                    dann kann ich gleich beim ursprünglichen ansatz bleiben, die pdf-dokumente im filesystem zu belassen.

                    Comment


                    • #11
                      Originally posted by Christian Marquardt View Post
                      Warum der Weg über den Webbrowser?

                      Sinnvoller ist die Anzeige direkt mit dem im jeweiligen System vorhandenen Anzeigeprogramm für diese Dateiendung. Hier bsp. Adobereader oder Foxitreader.
                      Passiert ja auch mit Adobe Reader bzw. FoxitReader. Diese werden ja auch vom IE geladen wenn PDF angezeigt wird. Und will man ein Programm mit Adobe Reader verwenden sollte man eh nur die Lösung per Webbrowser verwenden. Die direkte Anzeige per OCX/ActiveX wird von Adobe nicht supportet und Adobe behält sich vor diese direkte Anzeig ab und zu lahm zu legen (wie beim Reader V6/7 als eine andere Interface-ID verwendet wurde und jedes Programm das direkt das ActiveX verwendet hat nicht mehr ging. Alle Programme die den IE-Wrapper verwendet hatten funktionierten noch.

                      Comment


                      • #12
                        Passiert ja auch mit Adobe Reader bzw. FoxitReader. Diese werden ja auch vom IE geladen wenn PDF angezeigt wird. Und will man ein Programm mit Adobe Reader verwenden sollte man eh nur die Lösung per Webbrowser verwenden. Die direkte Anzeige per OCX/ActiveX wird von Adobe nicht supportet und Adobe behält sich vor diese direkte Anzeig ab und zu lahm zu legen (wie beim Reader V6/7 als eine andere Interface-ID verwendet wurde und jedes Programm das direkt das ActiveX verwendet hat nicht mehr ging. Alle Programme die den IE-Wrapper verwendet hatten funktionierten noch.
                        Verstehe ich jetzt nicht:

                        Wenn ich keine Webanwendung habe - wovon ich hier ausgehe - ist es doch sinnvoller bsp mit CreateProcess o.a. Routinen des Betriebssystems die Anzeige einer Datei vorzunehmen, als den Browser zu laden und diesem dann die Datei zu übergeben und der macht das dann??
                        Christian

                        Comment


                        • #13
                          Wenn es eine Webanwendung (ASP.NET) ist muß das PDF einfach zum Client gestreamt werden und der Browser in der die Anwendug eh läuft macht dann schon das richtige (Wenn die Streaming-Angaben richtig gesetzt sind). I.d.r. wird er im Browserfenster (Frame) einfach den entsprechenden PDF-Viewer laden und anzeigen.

                          Comment


                          • #14
                            nochmal zusammengefasst:

                            1. es wird KEINE web-anwendung werden.
                            2. pdf-dateien werden als BLOB in einer ORACLE-datenbank gehalten
                            3. ebenso jpg-bilder
                            4. die bilder werden nach dem selektieren etwa so an eine picturebox
                            gegeben: picturebox = image.fromstream(bytes)

                            mein problem:
                            selbst wenn ich NICHT über eine vorschau gehe, und die pdf-datei direkt per acrobat-reader darstellen will, habe ich derzeit keine andere lösung gefunden,
                            als zunächst aus den gelesenen blob-daten wieder eine physische pdf-datei zu erzeugen, um die dann anschliessend wie auch immer darzustellen bzw. zu öffnen. genau dieses physische zwischenspeichern möchte ich vermeiden/umgehen. aber W I E ???

                            Comment


                            • #15
                              Originally posted by tioga63 View Post
                              genau dieses physische zwischenspeichern möchte ich vermeiden/umgehen. aber W I E ???
                              Ganz "einfach". Du mußt programminterne einen Eigenen WebServer laufen lasssen der dann per HTTP die PDF-Datei ausliefert die der WebBrowser per http://localhost... anfordert.

                              Comment

                              Working...
                              X