21 messaggi dal 27 maggio 2007
Ho una pagina ASP.NET che ha il compito di fare un upload di un'immagine e poi memorizzare il nome dell'immagine nel DB MYSQL su un Aruba hosting.

le prime righe della pagina sono :

<%@ Page Trace="False" Language="vb" aspcompat="false" debug="true" validateRequest="false"%>
<%@ Import Namespace=System.Drawing %>
<%@ Import Namespace=System.Drawing.Imaging %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="MySql.Data.MySqlClient" %>
<%@ import namespace="MySql.data.MySqlclient.MySqlConnection" %>
<%@ Import Namespace=System %>
<%@ Import Namespace=System.Web %>

poi c'è tutta la procedura per l'upload dopo di che lo script per la connessione al database e la procedura INSERT INTO TABELLA.

Non ho ancora capito cosa devo inserire del fiel WEB.CONFIG

E' una settimana che ci sbatto la testa c'è un anima gentile che mi può dire la procedura passo passo di come devo fare? ho gia messo nella cartella PIN nella root i seguenti file:

MySql.Data.dll
MySql.Web.dll
MySql.Web.pdb

Le ho tentate tutte diversi scripr trovati sul web ma nulla da fare.
Vi prego aiuto sono disperato e non so come fare.

Quando avevo un database in access filava tutto liscio lo script era questo :

Dim con As New System.Data.OleDb.OleDbConnection
dim text1
text1=DateValue(now)
Dim myPath As String
myPath = Server.MapPath("../mdb-database/xxxxxxxx.mdb")
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data source=" & myPath & ";"
Dim myCommand As New System.Data.OleDb.OleDbCommand
myCommand.CommandText = "insert into archiviofoto(code, datainserimentofoto, codimm, foto1, minifoto) VALUES ('" & Request.QueryString("use") & "', '"+text1+"', '" & Request.QueryString("cod") & "', '" & fileFld.FileName & "', '" & upload_thumb & fileFld.FileName &"' )"
myCommand.Connection = con
con.Open()
myCommand.ExecuteNonQuery()
con.Close()

Adesso ho un database MYSQL e non va piu nulla.
Vi ringrazio anticipatamente dell'aiuto.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Marco,
lo script cambia leggermente perché vai ad usare le classi del namespace MySql.Data.MySqlClient. Per esempio, anziché aprire una OleDbConnection dovrai aprire una MySQLConnection.

L'altra differenza rispetto ad Access è nella stringa di connessione: anziché indicare il percorso ad un file .mdb dovrai invece fornire i parametri di collegamento al database che Aruba ti ha fornito.

MarcoBrasil ha scritto:

Non ho ancora capito cosa devo inserire del fiel WEB.CONFIG

Non è un obbligo, ma è una buona pratica quella di inserire le stringhe di connessione nel web.config.
Esse contengono pur sempre dati di configurazione che possono cambiare da provider a provider, e dunque si preferisce non cablarle nell'applicazione come nell'esempio che hai postato.

Fai così, nel web.config aggiungi questo elemento (se non già presente) all'interno di <configuration>:
<connectionStrings>
    <add name="MiaStringaDiConnessione"  connectionString="Server=nomeserver; Database=nomedatabase; Uid=nomeutente; Pwd=password;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
Ovviamente adegua i parametri Server, Database, Uid e Pwd con i valori che ti sono stati forniti.

Adesso vai nella pagina e scrivi del codice per accedere al database ed eseguire il comando. Prima però togli questo, perché non è un namespace ma una classe.
<%@ import namespace="MySql.data.MySqlclient.MySqlConnection" %> 

Ecco il codice:
'prelevo la mia stringa di connessione dal web.config.
Dim connString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings("MiaStringaDiConnessione").ConnectionString
'Creo una nuova MySqlConnection. Lo faccio in un blocco Using, così se dovessero
'verificarsi errori avrei comunque la sicurezza che la connessione sarà chiusa correttamente
Using conn As New MySqlConnection(connString)

    'Creare il comando è molto facile con il metodo CreateCommand dell'oggetto connessione
    'Ancora una volta adopero un blocco using. Lo faccio per ogni classe che implementi IDisposable
    Using cmd = conn.CreateCommand()

        'Testo del comando. Uso i parametri, è importante non esporsi alla SQL injection.
        cmd.CommandText = "INSERT INTO archiviofoto (code, datainserimentofoto, codimm, foto1, minifoto)" & _
            " VALUES (@code, @datainserimentofoto, @codimm, @foto1, @minifoto);"

        'Valorizzo i parametri del comando
        cmd.Parameters.AddWithValue("@code", Request.QueryString("use"))
        cmd.Parameters.AddWithValue("@datainserimentofoto", text1)
        cmd.Parameters.AddWithValue("@codimm", Request.QueryString("cod"))
        cmd.Parameters.AddWithValue("@foto1", fileFld.FileName)
        cmd.Parameters.AddWithValue("@minifoto", upload_thumb & fileFld.FileName)

        'Apro la connessione ed eseguo il comando
        conn.Open()
        cmd.ExecuteNonQuery()
        conn.Close()

    End Using
End Using


MarcoBrasil ha scritto:

ho gia messo nella cartella PIN nella root i seguenti file:
MySql.Data.dll
MySql.Web.dll
MySql.Web.pdb
Per fare questo lavoro è sufficiente l'assembly MySql.Data.dll, ma se stai usando funzionalità di ASP.NET come Membership e Roles API allora sì, mettili tutti nella cartella che si chiama bin, non PIN.

Mi raccomando, fai particolare attenzione a non esporti alla SQL Injection anche in altri punti dell'applicazione. Un utente potrebbe causare seri danni al database o accedere senza autorizzazione ad aree riservate, se solo volesse.
Qui trovi spiegato il problema. Puoi risolverlo con i parametri che ho usato nell'esempio.
http://www.aspitalia.com/script/390/Prevenire-Attacchi-SQL-Injection.aspx
http://www.aspitalia.com/script/522/Utilizzare-Classe-SqlParameter-Prevenire-Attacchi-Tipo-SQLinjection.aspx

ciao
Modificato da BrightSoul il 29 giugno 2013 10.18 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.