Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi Connessione remota a MySQL!!!

 
          So che č un argomento un po' logoro, ormai, ma non ci cavo i piedi!!
Devo creare un applicativo che si connetta ad un DB MySQL remoto. Mi sono
sleggiucchiato un po di documentazione ADO (fiono ad adesso avevo sempre
lavorato solo con DAO!) e ho fatto un po' di ricerche con Google. Quello che
č saltato fuori č questo (č solo una prova di connessione):
    Dim cnn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rst As New ADODB.Recordset
 
    cnn.Open "Driver={MySQL ODBC 3.51
Driver};Server=misure;Port=3306;Option=131072;Stmt=;Database=db_test;Uid=MioURS;Pwd=MiaPWD;"
    Set cmd.ActiveConnection = cnn
    cmd.CommandText = "select * from `MiaTabella`"
    rst.CursorLocation = adUseClient
    rst.Open cmd, , adOpenStatic, adLockBatchOptimistic
	....
    rst.Close
    cnn.Close
La stringa di connessione l'ho beccata su 
www.connectionstrings.com
 da cui
ho riadattato alle mie esigenze questa stringa:
"Driver={mySQL};Server=
data.domain.com
;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;"
Se provo a lanciare la procedura scritta sopra su una tabella piccola tutto
ok, se provo con una piů grande (~6000 record e 195 campi) mi caccia fuori
con un errore (alla riga di rst.open):
	Errore di runtime -
2147217915
 (80040e05):
	Oggetto Aperto
In ogni caso, prima di crashare il tempo trascorso č decisamente piů alto di
quello impiegato, ad esempio, da SQLyog a visualizzare i dati della stessa
tabella.
A questo punto la domanda č: cosa sbaglio?!?!?!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 "Driver={mySQL};Server=
data.domain.com
;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;"
Ma tu usi ODBC?
MySql ha anche un driver ADO proprietario.
Cerca sul sito.
Ciao
-- 
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 Cerca sul sito.
Mah, sul sito di MySQL c'č l'ODBC, il connector per Java e C++.... Ah, no,
c'č pure per .NET, ma io ho VB6.... :-(
Ho sbagliato ricerca? E poi usando l'ODBC cosa succede? E' piů lento? Di
questo me ne sono accorto, ma perchč dovrebbe andare in crash?


 questo me ne sono accorto, ma perchč dovrebbe andare in crash?
Oltre ad essere piů lento di solito i driver ODBC portano ad errori 
strani e incomprensibili come il tuo.


 Sono sicuro che da qualche parte c'è anche il provider per ADO.
OK, cerchrò ancora. Se qualcuno all'ascolto avesse già il componente in
questione, mi fa un fischio che mi risparmia un po' di fatica?
Grazie!!!!


 Grazie!!!!
Per qualche altro sventurato come me: alla fine ce l'ho fatta!!!
Il componente da scaricare è MyOLEDB3.exe da 
www.mysql.com
, e per
connettermi ho usato (copiato da altro post):
    Dim Conn As adodb.Connection
    Set Conn = New adodb.Connection
    Conn.Provider = "mysqlprov"
    Conn.Properties("data source") = "database=MioDB;server=MioServer"
    Call Conn.Open("user id=MioUser;password=MiaPWD")
Spero sia di aiuto a qualcuno, visto che MySQL impazza sul NG ultimamente!
Bye


 Il componente da scaricare è MyOLEDB3.exe da 
www.mysql.com
E il problema si è risolto?
Ciao
--
NeoDataType : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 E il problema si č risolto?
Direi proprio di sě: niente piů errore e tempi di apertura del Recordset
confrontabili con quelli di visualizzazione di SQLyog.
A proposito, grazie ancora!!!


A questo punto la domanda è: cosa sbaglio?!?!?!
così a me funziona
'1 and 2 ensure VB compatability and are the bare minimum.
' MYSQL_DEBUG=d:t:O,c::\myodbc.log in `AUTOEXEC.BAT'
'8 enables large BLOB values
'32 enables the dynamic cursor
'2048 enables the compressed protocol
'16384 helps VB handle the 64 bit integer columns Change LONGLONG 
' columns to INT columns (some applications can't handle LONGLONG).
'io uso 18475 (e' la somma di quelli sopra)
dim strConn as string
dim CONN As New ADODB.Connection
dim adoRecordset  As New ADODB.Recordset
 
strConn = "DRIVER=MySQL ODBC 3.51 Driver;server=192.168.1.1" & _
               ";uid=root" & ";database=pippo" & _
               ";password=pippo" & ";OPTION=18475"
    CONN.CursorLocation = adUseClient
    CONN.ConnectionString = strConn 
    CONN.ConnectionTimeout = 30
 
    CONN.Open
      With adoRecordset
         .CursorLocation = adUseClient
         .CursorType = adOpenStatic
         .LockType = adLockBatchOptimistic
         .Open "SELECT * FROM tabella;", CONN
      End With
io cosi' apri tranquillamente tabelle con oltre 300.000 record