MySql e VB.net

sabato 10 aprile 2004 - 11.43

angelo81 Profilo | Newbie

Ciao a tutti!!
sono nuovo di questo forum.Mi sono iscritto principalmente perche sto affrontando un progetto software e vorrei dei consigli sugli strumenti da utilizzare per iniziare a svillupare.Praticamente sono alle prese con un gestionale abbastanza vasto (prentivi, ordini clienti, magazzino,eth), dal progetto che ho esteso sono usciti fuori varie problematiche, una delle quali è la necessità di avere un RDBMS che gestisce sui 300.000 records in modo affidabile, dopo varie ricerche e test sono giunto all' idea di utilizzare MySql per 2 motivi:
1)Prezzo
2)Facilità di utilizzo
Ho scartato SQL Server per il semplice motivo del costo, e Access per la velocità. Vorrei sapere se secondo voi è una scelta giusta e tenendo presente che sviluppo con VB.net se esiste supporto adeguato per iniziare una programmazione VB.net - MySql. (piu' precisamente vorrei sapere se è possibile aggangiare un db mysql con crystal report o se devo rielaborare i dati provenienti dal server mysql con DB tipo Access creato in locale), un' ultima cosa ho notato sul sito di Mysql il download di MYSQLDRIVERCS ma onestamente non ho capito a cosa serve visto che io per connettermi al server Mysql (per effettuare dei test) ho usato ODBC, ce una differenza in fatto di prestazioni?
Saluti Angelo

Brainkiller Profilo | Guru

Ciao Angelo,
bel quesito :)

>1)Prezzo

Sicuramente MySQL ha un buon prezzo ed è molto migliorato negli anni. Io non lo conosco molto bene però qualche tempo fa mancava ancora di parecchie features che i RDBMS moderni come SQL Server o Oracle hanno. Certo i prezzi di questi due ultimi RDBMS sono effettivamente spropositati. Forse però con SQL Server Standard te la puoi cavare egregiamente. Ti ricordo inoltre che l'accoppiata ASP.NET Sql Server dal punto di vista prestazionale è la migliore. Quetso è quello che diceva la rivistas Week qualche mese fa dopo accurati Benchmarks.

>esiste supporto adeguato per iniziare una programmazione VB.net - MySql.

Sicuramente c'è il Data Provider apposta che devi scaricare separatamente che è ottimizzato proprio per MySql. Attualmente nel .NET Framework ci sono Data Provider ODBC, OleDB, Sql e Oracle. Anche se eventualmente puoi usare l'OleDB ti consiglio di scaricare quello per MySQL.

Se utilizzi Crystal Report non c'è nessun problema perchè tutti i dati vanno comunque a finire in un Dataset che ha un livello di astrazione più alto e quindi va bene per bindarlo ad un Report.

>un' ultima cosa ho notato sul sito di Mysql il download di MYSQLDRIVERCS ma onestamente >non ho capito a cosa serve visto che io per connettermi al server Mysql (per effettuare dei >test) ho usato ODBC, ce una differenza in fatto di prestazioni?

E' quello che ti dicevo poco fa. Questo è un .NET Data Provider ottimizzato per MySQL. Volendo puoi usare quello ODBC.NET incluso nel Framework ma perdi un po' in prestazioni e un po' in features.

ciao
david

trinity Profilo | Guru

ciao, ti volevo chiedere dove potevo scaricare il provider per mysql e come si chiama è urgente!!!

ciao

trinity Profilo | Guru

ciao, ti volevo chiedere dove potevo scaricare il provider per mysql e come si chiama è urgente!!!

ciao

trinity Profilo | Guru

ciao, ti volevo chiedere dove potevo scaricare il provider per mysql e come si chiama è urgente!!!

ciao

freeteo Profilo | Guru

ciao,
guarda questo post: http://www.dotnethell.it/forum/messages.aspx?ThreadID=144
io conosco anche i bytefx data : http://www.bytefx.com/DotData.aspx
ciao

angelo81 Profilo | Newbie

Ringrazio tutti per aver risposto alle mie domande, particolarmente david:-)

Io ho scaricato mysql data provider (Mysqldrivercs) da www.mysql.com, dopo di che l' ho installato e da quello che ho capito ho "referenziato" da vb.net il file mysqldrivercs.dll che ho poi importato con imports mysqldrivercs, sono arrivato fino a qui ma poi un po' per ragioni di tempo e un po' per la mia incapacità non sono riuscito a connettermi con il mio server mysql, connessione che sono riuscito a fare con odbc e che mi ha deluso in fatto di prestazioni dopo i test fatti, per questo provero' a ripetere i test con il dataprovider specifico di mysql (drivercs).

Perfetto david, sono riuscito con un db access, un dataset, e un adapter ad aggangiarmi a un dbgrid e penso quindi di riuscire anche ad aggangiarmi a crystal report con mysql (sempre se riesco con il driver specifico...altrimenti uso odbc per provare) mi informo anche sul prezzo di sql server standart e confronto le cose, per il fatto delle features di mysql, si è vero manca in qualcosa ma da quello che ho capito è solo questione di tempo e cmq sia dal progetto che devo mettere su va piu' che bene un normale database relazionale che funziona in attesa su una porta del server......l' importante è che sia veloce e affidabile e di facile utilizzo per assistenze remote....avrei 100 domande ma non ho tempo di farle..quindi rimando alla prossima, fammi sapere quando finisci l'articolo cosi ci do una letta.

Ciao angelo

trinity Profilo | Guru

Ho scaricato questa dll per mysql, ma non riesco a far funzionare la connectionstring, mi potete far vedere un esempio di codice? Tenete presente che sto utilizzando vb net e non c#.

ciao

Brainkiller Profilo | Guru

Per effettuare una connessione sono sufficienti le seguenti istruzioni:

Dim conn As MySQLConnection = New MySQLConnection(New MySQLConnectionString("localhost", "mysql", "root", "").AsString)
conn.Open()

Vi ricordo che dopo aver installato il .NET Data Provider di MySQL nelle cartelle trovate anche degli esempi già pronti dove potete vedere come fare.

ciao
david

angelo81 Profilo | Newbie

Ciao a tutti,
Ho un piccolo problema, praticamente quando eseguo una query di inserimento tipo: INSERT INTO nometab VALUE var1=’valore1’ var2=’valore2’… capita che se una variabile contiene il carattere ‘ (apice) giustamente va in errore il mio programma, la mia domanda è questa, come fare per fare un controllo dati sulle stringhe?...tipo per esempio un indirizzo, controllare che non ha caratteri “apici”?, Va bene questo è facile basta usare qualche funzione che cerca una sottostringa, quello che vorrei sapere è se il vb .net ha qualche funzione particolare tipo format pero’ un po’ + elastica per fare questi controlli, un ultima cosa un po’ piu’ complicata, come si fa per personalizzare i msg di errore del db mysql? Nel senso…se per esempio mando il db in errore (duplico una chiave primaria) intercetto l’ eccezione dell’ errore che si genera con try ,Catch e end catch, dopo di che scrivendo ex.message (ex è l’istanza della classe Exception, almeno per quanto ho capito io) posso visualizzare l’errore e fin qui va bene..... quello che serve a me pero’, è rilevare una costante dell’ errore e gestirla con un case end case in modo da poter risalire all’ errore e in base ad esso informare utente con un messaggio d’ errore personalizzato per la mia applicazione (in questo caso per esempio Codice Cliente esistente invece del messaggio “duplicate entry etc”)

Saluti Angelo

Brainkiller Profilo | Guru

Nel primo caso degli apici ' io procedo così, prima di passare le stringe uso il metodo Replace della classe String e rimpiazzo un apice con due apici in questo modo passo la query ed è sicura e non da' problemi.

Per il secondo problema l'Exception generica non fornisce un numero d'errore, la SQLException invece fornisce anche il numero d'errore infatti se guardi fra le proprietà c'è appunto .Numer o addirittura .LineNumber. Prova a verificare se c'è anche in una MySQLException. Se non ci fosse l'unica cosa su cui ti puoi appoggiare è la descrizione dell'errore :-|

ciao
david

Brainkiller Profilo | Guru

Comunque di solito il case viene effettuato sul tipo di Exception e poi si visualizza o un messaggio generico "c'è stato un problema, contattare l'amministratore" fornendo eventualmente dati aggiuntivi oppure si visualizza l'errore restituito dal server.

ciao
david

angelo81 Profilo | Newbie

Gia' fatto...instanziare con Catch ex As MySQLException è stata una delle preme cose che ho provato ma la proprietà number non ce' :-(....se devo gestire con le descrizioni penso che cambio il data provider forse byteFx o come si chiama....per quanto riguarda il problema degli apici hai trovato proprio la soluzione ideale...non ci avevo proprio pensato a questa soluzione....allora per gestire gli errori provo con l'altro data provider vediamo se ce modo di farmi restituire questi numeri:-)...ti ringrazio ancora una volta per le informazioni.

Ho letto l'articolo su mysql, per chi è alle prime armi è ottimo :-)..io ho perso ore per trovare quelle informazioni qualche mese fa..non potevi scriverlo prima!!:-))

Ciao
Angelo

Brainkiller Profilo | Guru

Volevo scriverlo molto prima :)
Il fatto è che fra una cosa e l'altra è sempre passato in secondo piano come priorità.
Appena ho trovato un attimo di tempo sono riuscito a metterlo giù :)

ciao
david

angelo81 Profilo | Newbie

Rieccomi qua...Ho riscontrato un piccolo problema dovuto al cambio del data provider...
Praticamente non riesco a connettermi con ByteFx specificanto gli stessi parametri di
connessione...stesso server..stessi parametri che con MysqlDriverCs funzionano
perfettamente..mentre con bytefx esce questo errore:

>Unable to connect to any of the specified MySQL hosts

Da quello che ho capito non trova il server mysql...Il codice che ho scritto è questo:

Dim DataSource As String = "192.168.0.1"
Dim Database As String = "Prova"
Dim UserID As String = "root"
Dim Password As String = ""
Dim MyConString = "Data Source=" + DataSource + ";Database="+database+";User ID=" + UserID + ";Password=" + Password
Dim conn As New MySqlConnection()
conn.ConnectionString = MyConString
conn.Open() 'in questo punto va in errore
conn.Close()


Considera che gli stessi parametri testati con drivercs funzionano perfettamente...
Ho visto sul sito della bytefx e la documentazione non esiste o almeno non sono riuscito
a trovare nessun tipo di supporto tecnico al data provider...secondo me ce qualcosa che
non va nella stringa di connessione ma non so cosa..nell' esempio che riporta la documentazione del driver
che ho scaricato (byteFx) è praticamente uguale al codice che ho scritto (o almeno credo).
cmq sia nella classe MySqlException esiste la proprietà number quindi in teoria dovrei
aver risolto il fatto del numero di errore...vedi se puoi aiutarmi nel poco tempo che hai :-)

Ciao Angelo

angelo81 Profilo | Newbie

Inutile dire che in data source della stringa ho praticamente provato ad inserire qualsiasi cosa anche il nome del server invece dell' indirizzo ip....il server mysql non è in locale ma è un' altro pc collegato con un cavo cross (comando ping risponde bene e cmq sia con drivercs funziona bene)

trinity Profilo | Guru

Ciao,
ByteFx secondo me non è ancora molto stabile, o utilizzi MySQLDriverCS, ODBC net o meglio di tutti la Corelab solo che quest'ultimo non è free; comunque ti posto questo threads e leggi dei test che un nostro collega nel forum ha elaborato proprio sulle prestazioni dei provider per mysql.

http://www.dotnethell.it/forum/messages.aspx?ThreadID=1112

Ciao
Fabio

sorio Profilo | Junior Member

anche io ho lo stesso problema!

hai rispolto un qualche modo?
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5