Stranezze .net e mysql

venerdì 11 marzo 2005 - 13.34

framur Profilo | Newbie

Salve, eccomi di nuovo.
Ho un quesito per chi lavora con .net e mysql tramite MysqlDrivercs.
Ho realizzato un applicativo (si installa tramite setup) che sulla macchina dove risiede il db va benissimo.il problema sorge quando installo il programma sulle altre macchine della rete.
Difatti pur avendo impostato la connection string per puntare al pc che ha il server mysql ("server=http://ip del pc server; ecc...") quando eseguo il programma mi da il seguente errore.
mysqldrivercs error,can't connect to mysql server on "localhost" (16100) ----????
Perchè mi cerca il localhost anche se imposto la cnstring a puntare un'altro pc della rete?

Grazie

nikol84 Profilo | Junior Member

Secondo me non drovresti utilizzare il protocollo internet per comunicare con le macchine in rete,anche perchè mysql lavoro con la porta 3306, io utilizzo Mysql connector , lo puoi trovare sul sito mysql.com e mi trovo bene non ho nessun problema con le connessioni. la stringa che utilizzo è la seguente :

connStr = String.Format("server={0};user id={1}; password={2};database=nomedatabase;pooling=fals", "indirizzo del server", "username", "passowrd")

prova a scaricarlo Mysql connector io ho la versione 1.0.3

ciao fammi sapere se hai problemi

framur Profilo | Newbie

dovrei però cambiare quasi tutto il progetto!


Faccio 2 prove,grazie

framur Profilo | Newbie

Scusa di nuovo il disturbo, ti volevo chiedere solo una cosa,ho dato uno sguardo alla documentazione, per utilizzare i parametri debbo sempre utilizzare il il metodo prepare?Questa tecnica a che tu sappia, è utilizzata solo da questo provider?

Ciao e scusa di nuovo

nikol84 Profilo | Junior Member

Non ho ben capito cosa intendi comunque ti do alcune notizie iniziali

Per aprire una connessione :
connStr="la stringa che ti ho dato in precedenza con i parametri giusti"

Dim dbconn as mysqlconnection
'se utilizzi un metodo in modalità connessa questa dichiarazione ti conviene farla a livello globale e poi te la passi come parametro dove ti occorre, altrimenti dove devi aprie la connessione dichiari l'oggetto '

dbconn = New MySqlConnection(connStr)'imposta la connessione
dbconn.Open()'apre la connessione al db

Eseguire Operazione :
questa piccola funzione può eseguire modifica,eliminazione,inserimento, nel database l'unica cosa da fare è impostare la stringa sql correttamente.
Public Sub EseguiScrittura(ByVal cn As MySqlConnection, _
ByVal stringa As String)
Dim cmd As New MySqlCommand(strSql, cn)
cmd.ExecuteNonQuery()
cmd.Dispose()
End Sub
Come la documentazione(in inglese) di mysqlconnector c'è nel file.zipè che ti sei scaricato.
Ciao se hai problemi non preoccuparti contattami, fammi sapere

nikol84 Profilo | Junior Member

ho commesso alcuni erroi di battitura !!!!!!!!!!!!!!!!!!!!!!!!!

framur Profilo | Newbie

OK, quando si utilizzano query parametriche,prima di assegnare il valore ai parametri impostati, debbo utilizzare sempre e comunque il metodo prepare dell'oggetto command che deve eseguire la query?

Ah, un'altra consulenza,uso un metodo disconnesso,(dataset), mi conviene dichiarare più oggetti connection(1 quando carico i dati ed un'altro quando invio le modificje al db), o crearne un oggetto globale solo per tutta la durata dell'appliazione??
Ciao e grazie.

nikol84 Profilo | Junior Member

Secondo me dovresti crearno uno solo aprirlo,eseguire le operazioni ,chiudere la connessione.Se la tua applicazione interagisce "spesso" con il database ti conviene mantenere la connessione aperta,è "dispendioso" aprire e chiudere la connessione.

inoltre l'oggetto command ogni volta lo devi instanziare,eseguire le operazione e eliminarlo.


Spero di essere stato chiaro se hai problemi non preoccuparti richiamami.
Ciao Nicola

P.S. da quando programmi in vb.net

framur Profilo | Newbie

Ciao,programmo da pochi mesi, non sono molto pratico.
Ho un'altra idea da proporti.
Capiterà anche a te di dover aggiornare varie tabelle da un dataset a un database mysql.
io utilizzo il sistema proposto da microsoft(nella msdn) cioè creo query parametriche per gli oggetti command del dataadapter.
Quello che vorrei fare è creare una funzione generica che passate di volta in volta le tabelle del dataset creano gli oggetti command con i paramteri già impostati.
L'unico problema è che quando uso l'istruzione cmd.parameters.add(nome,tipo) in nome ci metto ?nomecampocolonnatabella e in tipo= tipodatodellacolonna.

Però mi da una serie di errori.
Te come fai?

Grazie

nikol84 Profilo | Junior Member

Io non utlizzo query parametriche di questo tipo. La mia idea è quella di passare dei parametri ad una procedura, quest'ultima conconcatena una stringa secondo i parametrici dati in input.


Esempio

public sub query(nometabella,campo1,campo2,....,campoN)

If nometabella="tabella1" then
strsql="select * from " & nometabella & " where campokey = "& campo1
elseif
strsql="inserto into "& nometabella & " where id="& campo2 & " and id2=" & campoN
elseif........
..
..
end if
alla fine della struttura if precedente puoi inserire la creazione dell'oggetto command e
gli passo la stringa che hai concatenato.
io utilizzo mysql come database e da la possibilita di eseguire qualsiasi operazione in questo modo.

Sono stati efficaci gli aiuti precedenti?


end sub

framur Profilo | Newbie

Alcuni aiuti sono stati ottimi, passando a connector/net ho risolto l'accesso tramite la rete,ora ho il problema che ti ho citato prima,anche se questa tua ultima idea sembra buona.
Hai qualche sistema per la valutazione del carico di lavoro per vedere se (quando la mia funzionerà) quale delle due ipotesi sia la migliore sotto carico?

Grazie.

Ps:Se vuoi possiamo tenerci in contatto tramite email

nikol84 Profilo | Junior Member

Io penso che l'ideal sia utilizzare direttamente istruzioni che interagiscono con il database, non conosco bene il metodo che hai descritto in precedenza quindi nn posso aiutarti!!!

la mia email è : nicolapalumbo@euronetitalia.com

Ciao Nicola di dove sei??
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