tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1336
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    crazyPower crazyPower ist offline Mitglied Silber
    Registriert seit
    Nov 2004
    Beiträge
    64
    Hallo,

    ich habe folgendes Probelm:
    Ich hole aus einer IBM DB2 ein BLOB (Bild), und möchte das in ein Container-Objekt speichern, um den kompletten Datensatz als ObjectOutputStream übers Netzwerk rauszuhauen.
    Nun meine Frage: Welchen Datentyp soll ich verwenden? BufferdImage brauch ich hier ja nicht, da das Bild nicht in einem SWING-Panel angezeigt werden muss. Soll ich das in ein ByteArray speichern? Nur wie finde ich raus, wie groß dieses Array werden muss?

    Danke

    cP
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Lies das Bild doch einfach mittels eines InputStreams aus der DB aus und speichere die Daten in einem ByteArrayOutputStream.... danach rufst du am baos.toByteArray() auf und fertig.

    gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    crazyPower crazyPower ist offline Mitglied Silber
    Registriert seit
    Nov 2004
    Beiträge
    64
    Danke. Hat soweit geklappt.

    Jetzt habe ich noch ein weiteres Problem:
    Ich möchte in einem ResultSet eine bestimmte row ansprechen, versuche ich das mittels
    rs.absolute(1);
    bekomme ich aber folgende SQLException:
    java.sql.SQLException: [IBM][JDBC-Treiber] CLI0627E In der Ergebnismenge kann nicht geblättert werden.

    Wie kann ich dann eine Zeile ansprechen. Ich kann einfach nicht glauben, dass ich extra eine Schleife mit next() machen muss, und dann break wenn ich meine zeile erreicht habe.....


    cu

    cP
     

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Dann versuchs mal über den enstprechenden ResultSet Typ beim erstellen eines Statement Objekts über die Connection:

    public Statement createStatement(int resultSetType,
    int resultSetConcurrency,
    int resultSetHoldability)
    throws SQLException

    Creates a Statement object that will generate ResultSet objects with the given type, concurrency, and holdability. This method is the same as the createStatement method above, but it allows the default result set type, concurrency, and holdability to be overridden.

    Parameters:
    resultSetType - one of the following ResultSet constants: ResultSet.TYPE_FORWARD_ONLY, ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE
    resultSetConcurrency - one of the following ResultSet constants: ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE
    resultSetHoldability - one of the following ResultSet constants: ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT
    Returns:
    a new Statement object that will generate ResultSet objects with the given type, concurrency, and holdability
    Throws:
    SQLException - if a database access error occurs or the given parameters are not ResultSet constants indicating type, concurrency, and holdability
    Since:
    1.4
    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  5. #5
    crazyPower crazyPower ist offline Mitglied Silber
    Registriert seit
    Nov 2004
    Beiträge
    64
    Hi,

    so langsam komm ich mir etwas blöd vor... hier mal meine Klasse:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
      public class exec_sql_statement {
      exec_sql_statement(dbconn dbc1, String sqlquery){
            this.befehlstext = sqlquery;
            
            this.dbc1               = dbc1 ;
            Connection verbindung           = dbc1.get_connection();
            try{
            prepare              = verbindung.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        
            }catch (Exception e){System.out.println(e);}    
            
            try{
             
                 ergebnismenge      = prepare.executeQuery(befehlstext);
                 metadaten          = ergebnismenge.getMetaData();
                 anzahlds           = ergebnismenge.getFetchSize();
                 anzahlSpalten   = metadaten.getColumnCount();
       
                 
                 Buch[] Bucharray = new Buch[anzahlds];
                 for (int i=0; i<anzahlds;i++){
                    Bucharray[i] = new Buch(ergebnismenge, metadaten, anzahlSpalten, i+1);
                 } // hier übergebe ich das ResultSet an die Klasse Buch
       .
       .
       .

    Die Verbindung zur DB ect. funktioniert alles prächtig. nur kann ich in der Klasse "Buch" die Zeilen nicht direkt anspringen, obwohl das RS Scrollable ist. Wieso?
    Ich übergebe doch nur die Referenz, nicht das Objekt selbst.....

    Langsam habe ich das Gefühl, dass das IBM nicht implementiert hat...

    Danke für deine Ausführlich hilfe...

    cu

    cP
     

Ähnliche Themen

  1. 2 Bilder in einer Box
    Von kannaum im Forum CSS
    Antworten: 5
    Letzter Beitrag: 09.05.10, 13:06
  2. Datentyp einer Scrollbar von Integer auf Long
    Von MatMagic im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 22.04.09, 23:00
  3. Antworten: 1
    Letzter Beitrag: 27.02.08, 10:15
  4. Datentyp in einer Schleife ändern
    Von Claas M im Forum PHP
    Antworten: 4
    Letzter Beitrag: 13.03.05, 23:07
  5. Details einer Tabelle (Bezeichnung+Datentyp) anzeigen
    Von Scope im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 04.03.02, 13:33