Tipo dato immagine in sql server express

venerdì 25 aprile 2008 - 21.28

giobaxx Profilo | Junior Member

Dopo aver messo in una colonna del database un tipo immagine come la si può visualizzare sul gridview??....avviando l'applicazione ci appare il solito quadrettino con la x rossa........il problema è che non sappiamo come gestire questo campo....

La tabella è semplice prevede che

TABELLA TIPO

idTIPO
Tipologia è un campo di tipo testo
imm è il campo immagine può essere una delle seguenti icone : mail o telefono

noi abbiamo le icone ma come si visualizzano nel db......e poi dopo nel gridview?

A quanto ho capito viene richiesto un valore binario del immagine......cioè? dovremmo convertire l'immagine in binario??..e come si fa??.....

alx_81 Profilo | Guru

>Dopo aver messo in una colonna del database un tipo immagine
>come la si può visualizzare sul gridview??....avviando l'applicazione
>ci appare il solito quadrettino con la x rossa........il problema
>è che non sappiamo come gestire questo campo....
>
>noi abbiamo le icone ma come si visualizzano nel db......e poi
>dopo nel gridview?
Nel db si salvano, non si visualizzano .
Per la gridview invece puoi pensare di fare una paginetta che in base all'id passatole (ad esempio nel querystring) ricavi il record e "scriva" l'immagine tramite un Response.BinaryWrite(campoimmagine).

una paginetta che, idealmente, fa:

- leggo il querystring (l'id)
- creo e apro la connessione
- lancio il comando per id e ricavo il campo immagine
- chiudo la connessione
- effettuo la scrittura in binary (Response.BinaryWrite)

A questo punto nella gridview crei una colonna con un controllo immagine (<asp:Image> o <img>) e nel path dell'immagine metti il percorso della paginetta che hai creato, passandole l'id dell'immagine che vuoi visualizzare.

Ciao!

Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

giobaxx Profilo | Junior Member


nel nostro caso in realtà l'applicazione non dovrà mai salvare immagini...nel senso che la tabella tblTIPO in realtà non sarà mai toccata....

a livello sqlserver avremo una tabella tblTIPO

id tipo icona
-------------------------------------
1 telefono icona telefono
2 mail icona email
3 appuntamento icona che dia l'idea di un appuntamento

poi facendo una query nella tabella principale sarà visualzzato il telefono o il mail...etc......ma in realtà non salverò mai più immagini sul db perchè le tipologie di contatto saranno sempre o solo quelle della tabella tblTIpo......ora il problema è...si può preinmpostare a livello sql server express una immagine....o per forza la si deve caricare via codice da vb.net o visual c#...???

AIUTO!!

alx_81 Profilo | Guru

>nel nostro caso in realtà l'applicazione non dovrà mai salvare
>immagini...nel senso che la tabella tblTIPO in realtà non sarà
>mai toccata....
ok, ma almeno la prima volta andrà inserita questa immagine

>si può preinmpostare a livello sql server express una immagine....o
>per forza la si deve caricare via codice da vb.net o visual
>c#...???
no, puoi decidere due strade:

- salvare l'immagine su disco e il path sul campo della tabella (eviti la Response.BinaryWrite e leggi da db il path da mettere nel controllo immagine)

- usare il seguente comando sul database per salvare l'immagine in tabella:
INSERT INTO TuaTabella (id, campo2, immagine)
SELECT 1, 'telefono', Bulkcolumn FROM OPENROWSET(BULK N'PercorsoImmagineTelefono', SINGLE_BLOB) as Immagine

vedi tu . Puoi anche utilizzare il codice per caricarlo in VB.Net o C#.. ma con queste due strade fai meno fatica

Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

giobaxx Profilo | Junior Member

allora ho provato a seguire la seconda strada che mi hai consigliato ho costruito un db di prova con la seguente tabella
tblTIPO con i seguenti campi id, tipo, icona dove ovviamente il campo icona è un campo di tipo immagine

ho provato a lanciare il comando:

INSERT INTO tblTipo (id, tipo, icona)
SELECT 1, 'telefono', Bulkcolumn FROM OPENROWSET(BULK N'c:\image.jpg', SINGLE_BLOB) as Immagine

ma ricevo un errore :
Messaggio 208, livello 16, stato 1, riga 1
Il nome di oggetto 'tblTipo' non è valido.

ho provato a mettere dbo.tblTIpo ma mi da lo stesso errore....abbiamo iniziaro sql server da una settimana.....e il prof vuole sto cavolo di icona sul db..mihhhh.......

dove cavolo è che sbagliooo????

alx_81 Profilo | Guru

>dove cavolo è che sbagliooo????
Ti posso allegare un esempio che mi funziona perfettamente:

USE tempdb; GO CREATE TABLE tipi ( id int PRIMARY KEY not null , tipo varchar(20) not null , icona image null ) GO INSERT INTO dbo.tipi (id, tipo, icona) SELECT 1, 'telefono', BulkColumn FROM OPENROWSET(BULK N'D:\immagine.jpg', SINGLE_BLOB) as Immagine GO SELECT * FROM dbo.tipi -- pulizia DROP TABLE dbo.tipi GO

Sicuro che il database selezionato sia corretto? Sembra proprio un errore dato dal fatto che sei su un database (magari quello di default definito per il tuo utente, come iniziale è master)..
Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

giobaxx Profilo | Junior Member

grazie!!!mitico!!!

ho corretto le minchiate che scrivevo e sembra funzionare.....avrei un'altra curiosità visto che la realizzazione del database è condivisa tra vari gruppi e quindi in reltà il database è in parte già realizzato.....e probabilmente andrà poi rimodificato quando sarà scelta la struttura definitiva...........

cioè noi avevamo il db tasklist con una tabella task correlata appunto con la nostra tblTipo dove inserire le imagini....che in parte era già stata riempita....mancavano solo le immagini nella colonna icone......

noi avremmo già la seguente situazione.......con l'id già correlato con la tabella principale tblTask................

id Tipo icona

1 Telefono <vuoto>
2 Mail <vuoto>
3 Appuntamento <vuoto>

Ora esiste la possibilità di modificare le righe della tabella tblTipo aggiungendo le immagini e basta...senza dover ricreare la tabella....o aggiungere i record completi??

alx_81 Profilo | Guru

>noi avremmo già la seguente situazione.......con l'id già correlato con la tabella principale tblTask..
>
>id Tipo icona
>
>1 Telefono <vuoto>
>2 Mail <vuoto>
>3 Appuntamento <vuoto>
>
>Ora esiste la possibilità di modificare le righe della tabella
>tblTipo aggiungendo le immagini e basta...senza dover ricreare
>la tabella....o aggiungere i record completi??
certo che puoi, basta usare una UPDATE invece che una INSERT. Basandosi sul precedente esempio che ti ho mandato:

UPDATE dbo.Tipi SET icona = (SELECT BulkColumn FROM OPENROWSET(BULK N'D:\immagine.jpg', SINGLE_BLOB) as Immagini) WHERE id = 2 GO

Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

giobaxx Profilo | Junior Member

vero GURU!!!
GRAZIEEEEEEEEEEEEEEEEEEEEEEEE
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5