Avatar billede thinge Nybegynder
23. februar 2006 - 09:35 Der er 11 kommentarer og
1 løsning

Url til billede til blobDomain også ned i ORACLE - databasen

public BlobDomain getPicture(){
        byte[] buf = new byte[65536];
        try {
          URL realUrl = new URL(pictureUrl.toString());
          URLConnection con = realUrl.openConnection();
          InputStream readCon = con.getInputStream();
          int i = 0;
          while((i=readCon.read(buf))!=-1) {
             
          }
          readCon.close();
        }
        catch (Exception e) {
          e.printStackTrace();
        }
        return new BlobDomain(buf);
    }

det går fint lige indtil at jeg skal smide blobDomain i DB.
Jeg får godt nok NOGET ned i databasen, men det er forkert.
Er der nogen der har prøvet at smide et billede i en oracle DB.

thinge
Avatar billede thomaswinterberg Nybegynder
23. februar 2006 - 09:48 #1
Men hvorfor ligger hele dit blobDomain nede i databasen ? Det tager tid at gemmer og fylder meget. Hvorfor ikke bare smide en sti i din tabel i databasen der peger på hvor dit billeder ligger. Nå der så forespørges på et billed får du stien til billedet og kan sende billedet return til forespørgeren.
Avatar billede thinge Nybegynder
23. februar 2006 - 10:09 #2
Hvis jeg skal hente den via en sti kraver det en socket forbindelse, derefter skal billedet laves til en bufferedImage ellers kan jeg ikke sende den over nettet.
Alt dette er jeg fri for hvis jeg kan ligge den i databasen. Jeg ved ikke hvor meget tid det tager, eller hvor meget extra det fylder, men jeg TROR det er minimalt

thinge
Avatar billede arne_v Ekspert
23. februar 2006 - 15:16 #3
hvordan gemmer du i databasen og hvordan henter du ?

(jeg er ikke specielt bekymret ved at gemme billeder i en Oracle database)
Avatar billede thinge Nybegynder
24. februar 2006 - 10:01 #4
Her opretter jeg jeg et en række i databasen, og får række tilbage (card)
        CardsViewRow card =
            getInstance().getCardClient().createCard(getCardName(),characters,cardTypes,getPower(),getToughness(),getRules_text(),getRarity(),getSerieName(),getDeleted(),getCreatedBy());

Her efter finder jeg billedet:

        FindCardPictureUtility findCardPictureUtility = new FindCardPictureUtility(getCardName(),getSerieName());

til sidst indsætter jeg billedet i rækken(setPicture(...))

        card.setPicture(findCardPictureUtility.getPicture());


Altså
Avatar billede arne_v Ekspert
24. februar 2006 - 17:43 #5
jeg kan ikke se database koden !?!?
Avatar billede thinge Nybegynder
27. februar 2006 - 08:16 #6
grunden til dette er at jeg bruger viewObjects. ViewObject er oracles måde at til gå data i databasen. Viewobjects klare alt fra insert, update, select og delete for mig.
Avatar billede arne_v Ekspert
28. februar 2006 - 04:21 #7
det er jo svaert at sige hvad der gaar galt saa
Avatar billede thinge Nybegynder
28. februar 2006 - 07:58 #8
Jeg er helt enig. Jeg håbede bare på at nogen havde prøvet det.
Lige nu prøver jeg at finde selve sql'en til at sætte billedet ind. Er det noget du har prøvet eller har erfaring med?

tinge
Avatar billede thinge Nybegynder
28. februar 2006 - 09:22 #9
Så for h......
Nu fik jeg det til at virke.
Avatar billede arne_v Ekspert
28. februar 2006 - 14:14 #10
hvis vi snakker ren JDBC saa kan jeg nemt finde noget

(men det er nok ikke relevant nu)
Avatar billede thinge Nybegynder
28. februar 2006 - 14:17 #11
Kan være det bliver senere.
Men takker for hjælpen
Avatar billede thinge Nybegynder
28. februar 2006 - 14:22 #12
public BlobDomain getPicture(){
        addSerieNameToPictureUrl();
        addCardNameToPictureUrl();
        BlobDomain blobDomain = new BlobDomain();
        byte[] buf = null;
        int i = 0;
        try {
          OutputStream out = blobDomain.getBinaryOutputStream();
          URL realUrl = new URL(pictureUrl.toString());
          URLConnection con = realUrl.openConnection();
          InputStream readCon = con.getInputStream();
          buf = new byte[con.getContentLength()];
            while((i=readCon.read(buf))!=-1) {
                out.write(buf, 0, i);
            }
            readCon.close(); 
            out.close();
        }
        catch (Exception e) {
          e.printStackTrace();
        }
        return blobDomain;
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester