Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    [delphi] : inserire immagini nel database DB2

    Salve
    stro scrivendo un programma che crea un 'immagine e la inserisce in un campo di un deatabse di tipo DB2, ma non so come poter passare ad un campo BLOB un file di tipo .bmp visto che se faccio
    codice:
    query.paramByName('imaggine').asBlob:= ...
    mi dice che quel asBlob vuole un tipo String..ma se è un BLOB perchè vuole un tipo string?


    qualcuno di voi sa come invece passarlgi un ogetto di tipo TBitmap?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  2. #2
    P.S.

    l'oggetto qry è di tipo TQuery è fa appunto una query del genere

    codice:
    qry.sql.text:='INSERT INTO TABELLA VALUES(:nome,:immagine);
    dove nome è di tipo VARCHAR(50) ed è il nome del file, mentre immagine e di TIPO BLOB ed è l'immagine vera e propria...come faccio a passargli l'immagine di tipo TBitmap?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    E' possibile "castare" l'oggetto TField che rappresenta il campo BLOB al tipo TBlobField per accedere a metodi specifici, forniti dal tipo stesso, che consentono di caricare informazioni da file esterni (LoadFromFile) o da "stream" generici (LoadFromStream) all'interno del campo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Originariamente inviato da alka
    E' possibile "castare" l'oggetto TField che rappresenta il campo BLOB al tipo TBlobField per accedere a metodi specifici, forniti dal tipo stesso, che consentono di caricare informazioni da file esterni (LoadFromFile) o da "stream" generici (LoadFromStream) all'interno del campo.

    Ciao!
    ho provato ad usare un TblobFile ma tutta la documentazione che ho trovato riguardava sempre e solo l'uso di TTAble... io invece uso TQuery, come dovrei fare in questo caso?

    P.S.
    se uso il TblobField mi da sempre runtime error, quindi se mi fai un esempio su come usarlo nel mio caso mi aiuteresti molto...GRAZIE!
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  5. #5
    io ho provato questo:

    codice:
    var
      cod,i:integer;
      nome:String;
      bmp: TBitmap;
      buffer:TStream;
    begin
        //crea l'immagine dall componente di disegno
        bmp:=TBitmap.create;
        getBmp(foto,Bmp);
        buffer := TMemoryStream.Create;
        bmp.SaveToStream(buffer);
        //inserisce la sagoma nell'archivio
        qry.SQL.Text:='INSERT INTO tabella VALUES(:cod,:nome,:tipo,:imm)';
        qry.ParamByName('cod').asInteger:=cod;
        qry.ParamByName('nome').asString:=nome;
        qry.ParamByName('tipo').asInteger:=e_tipo.ItemIndex;
        qry.ParamByName('imm').LoadFromStream(buffer,ftBlob);
        qry.ExecSQL;
        qry.close;
        buffer.free;
    
    end;
    dove cod e nome sono stati precedentemente impostati ed e_tipo è un TListBox..

    Il problema ora sta che qualsiasi cosa metto al posto di ftBlob(o se lascio ftBlob) mi da sempre lo stesso errore Invalid Conversion...perchè?

    qualcuno sa darmi un esempio usando i TBlobField?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Gli stream funzionano come dei "nastri magnetici": se ci scrivi sopra, il "puntatore" virtuale è posizionato nel punto in cui ha avuto termine la scrittura; se devi copiare dati da uno stream ad un altro, dovrai provvedere con una Seek a risposizionarti all'inizio del "nastro" appena scritto affinché da quella posizione abbia inizio la lettura dei dati da copiare nel secondo stream (o in un altra risorsa).

    Prova a riposizionare a 0 (zero) lo stream sorgente prima di eseguire la LoadFromStream del campo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Originariamente inviato da alka
    Gli stream funzionano come dei "nastri magnetici": se ci scrivi sopra, il "puntatore" virtuale è posizionato nel punto in cui ha avuto termine la scrittura; se devi copiare dati da uno stream ad un altro, dovrai provvedere con una Seek a risposizionarti all'inizio del "nastro" appena scritto affinché da quella posizione abbia inizio la lettura dei dati da copiare nel secondo stream (o in un altra risorsa).

    Prova a riposizionare a 0 (zero) lo stream sorgente prima di eseguire la LoadFromStream del campo.
    ho fatto un

    codice:
    buffer.position:=0
    prima di eseguire il loadFromStram ma nulla.. sempre lo stesso errore
    codice:
    [IBM][CLI Driver] CLI0102E Invalid conversion. SQLSTATE=07006.
    ..uff,ma come devo fare per mettere una immaginina dentro il mio database DB2?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  8. #8
    insomma possibile che nessuno abbia mai inserito un'immagine dentro un database DB2?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Come è definito il campo? Intendo come tipo specifico.

    Se aggiungi i campi in modo persistente a Delphi, quale tipo viene assegnato al campo?

    Che componenti stai usando? BDE?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    Originariamente inviato da alka
    Come è definito il campo? Intendo come tipo specifico.

    Se aggiungi i campi in modo persistente a Delphi, quale tipo viene assegnato al campo?

    Che componenti stai usando? BDE?

    Si, uso un componente TQuery che si collega ad un TDataBase che si collega al DB2 tramite il driver di ODBC.

    Nel DB2 il campo è di tipo BLOB size 1Mb...

    hai bisogno di altre informazioni?
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.