[#] inserire auticamente file in database

martedì 10 agosto 2010 - 20.52

Anonimo Profilo | Senior Member

Salve, c'è un modo da fare che lo script vede una cartella ed inserisce i file dentro alla tabella del database?

Ad esempio
Cartella1
--> foto1.jpg
--> foto3.jpg
--> foto4.jpg

e lui le inserisce in questo modo

ID,File,Descrizione
1,foto1.jpg, "Foto1.txt"

Mi sapete dire come fare?.

grazie mille.

alx_81 Profilo | Guru

>Salve, c'è un modo da fare che lo script vede una cartella ed
>inserisce i file dentro alla tabella del database?
Ciao, come lo devi fare lo script, in che linguaggio? Che strumenti hai a disposizione? Dove devi inserire?
Ci sono vari modi, da .net, a SSIS, a script di qualunque altro tipo..

>grazie mille.
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

Anonimo Profilo | Senior Member

ha scusa, il liugaggio lo volevo scrivere nel titolo solo che mi è scapata la c comunque in C#,

vorrei che lo script da una cartella "gallery" mi vada ad ricavare tutte le immagini e le inserisce nel db sql o mysql quello che voi , dopo ci lavoro io.
con campi:

ID - FILE - DESCRIZIONE TXT


ID - > autoincremento
FILE -> none del file
TXT -> nome del file + .txt

Capito ?
grazie mille.

alx_81 Profilo | Guru

>vorrei che lo script da una cartella "gallery" mi vada ad ricavare
>tutte le immagini e le inserisce nel db sql o mysql quello che
>voi , dopo ci lavoro io.
Per navigare le cartelle puoi usare due tipi di approccio, quello statico tramite l'oggetto Directory (http://msdn.microsoft.com/it-it/library/system.io.directory(VS.80).aspx) oppure tramite la classe DirectoryInfo (http://msdn.microsoft.com/it-it/library/system.io.directoryinfo.aspx).
Ognuno di questi oggetti ha un metodo (GetFiles - http://msdn.microsoft.com/it-it/library/8he88b63.aspx / http://msdn.microsoft.com/it-it/library/wz42302f(v=VS.80).aspx) che ritorna l'elenco dei file in essa contenuti.
Puoi anche definire il pattern di ricerca nel parametro stringa indicato nel metodo, ad esempio solo i file che hanno estensione "jpg".

Quindi, siccome la GetFiles torna una collezione (file effettivi se usi il metodo dalla DirectoryInfo oppure stringhe se usi l'oggetto statico Directory) puoi usarla in un foreach.
Per ogni ciclo, vai ad usare ado.net per caricare il binario corrispondente al file e per fare quindi una insert/update su db. Puoi anche scrivere una stored procedure alla quale passerai poi un parametro di tipo varbinary(max).

Questo per darti un'idea..
Se ti fermi fammi sapere..
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

Anonimo Profilo | Senior Member

ciao, ma una cosa più semplice? no?
Io vorrei solo inserire il nome del file, non il file dentro al db.
Ora guardo quello che mi hai linkato e poi ti faccio sapere.

alx_81 Profilo | Guru

>ciao, ma una cosa più semplice? no?
ehm è la cosa più semplice che mi è venuta sinceramente.

>Io vorrei solo inserire il nome del file, non il file dentro al db.
ok allora basta salvare la proprietà FileName dell'oggetto che decidi di utilizzare per il ciclo.
Credimi, è veramente semplice.
Se proprio non ci riesci ti faccio un esempio in c# appena ho un minuto..

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

Anonimo Profilo | Senior Member

ok, aspetto un'esempio.

grazie mille.

alx_81 Profilo | Guru

allora, eccoti la creazione di una tabella su di un ipotetico database chiamato Utili:

USE Utili; GO CREATE TABLE dbo.Files ( IDFile int IDENTITY(1, 1) NOT NULL PRIMARY KEY CLUSTERED , FileFullName varchar(255) NOT NULL ) GO

per questo esempio inseriremo ogni file solo indicando il suo nome (e l'autoincrementante).
In allegato il programmino.

>grazie mille.
di nulla!

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

Anonimo Profilo | Senior Member

ok, grazie mille, ora lo porto alle mie esigenze .

grazie mille.

alx_81 Profilo | Guru

>grazie mille.
tutto chiaro?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

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

Anonimo Profilo | Senior Member

si tutto chiaro, solo una cosa:
come mai te usi quel tipo di connessione lì invece io devo inserire cosi:

using (SqlConnection conn = new SqlConnection("data source='PC-Luigi\\SQLEXPRESS';User ID='sa';Password=cane;database='Utili'"))

se no non mi si connette mai. se non metto in questa maniera..

Tanto faccio solo prove locale, poi sul server non ho db ms sql , ma ho solo mysql. (aruba e register.it)

Mi dici come mai?

grazie.

alx_81 Profilo | Guru

>Mi dici come mai?
io utilizzo la connessione via windows authentication, quindi basta che l'utente con cui sono loggato sul pc abbia le autorizzazioni per andare sul sql server.
Tu stai usando la sql auth, e quindi devi specificare l'utenza sql, indipendente dal contesto windows.
Ma basta mettere il tuo utente windows sotto le login server e applicare le permission per quell'utente. Oppure, se fai parte di un dominio, puoi anche indicare gruppi, e non per forza utenti specifici.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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