Newsgroup: it.comp.lang.visual-basic
Titolo: Mysql e cursori dinamici

Andiamo subito all'esempio.
Create questo database
CREATE DATABASE `testcursor`;
USE `testcursor`;
CREATE TABLE `test` (
  `progress` int(11) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL default '',
  `description` text NOT NULL,
  PRIMARY KEY  (`progress`)
) TYPE=MyISAM;
INSERT INTO `test` (progress, name, description) VALUES (1, 'black', 'test
description');
Programma VB con MYODBC 3.51.06 e ado 2.7
Private Sub Command1_Click()
    Dim Conn As New ADODB.Connection
    Dim rstTest As New ADODB.Recordset
    Dim I As Integer
    Conn.Open "DRIVER=MySQL ODBC 3.51
Driver;server=localhost;uid=root;database=testcursor;password=onitabas;OPTIO
N=16417"
    ' 16417= 1 + 32 + 16384
    Set rstTest.ActiveConnection = Conn
    rstTest.LockType = adLockReadOnly
    rstTest.CursorLocation = adUseServer
    rstTest.Open "select * from test"
    For I = 1 To 3
        MsgBox rstTest.Fields("name") & " - " &
rstTest.Fields("description")
    Next I
End Sub
Dal secondo loop in poi il campo description è nullo.
Sembra un problema di timeout, infatti se metto una interruzione prima del
for e aspetto un attimo ottengo il valore nullo dal primo loop. Il campo
name conserva il suo valore.
Tale problematica si verifica con i campi TEXT
Se si usa il cursore lato client (adUseClient) il problema non si presenta.

 Dal secondo loop in poi il campo description è nullo.
Quale sarebbe il loop? Il For/Next I?
Cosa dovrebbe fare? Qual è l'influenza di I?

 Cosa dovrebbe fare? Qual è l'influenza di I?
   Si il For Next.
I non ha nessuna influenza, ho solo letto per tre volte il volore
description

 description
E dici che:
 >>> Dal secondo loop in poi il campo description è nullo.
? Non ci posso credere... alla faccia di MySQL, anche se fosse dovuto a
qualche baco antico...

 a qualche baco antico...
Sempre che, ovviamente, il database sia "fermo"...

Il problema non è MYSQL ma il driver ODBC.
Per quanto riguarda l'insert.
Il valore dell'autoincrement lo puoi specificare nell'insert.
Non capisco cosa ti crei tanti problemi a livello teorico.
Non puoi chiaramente riassegnare un valore già esistente ed il valore
successivo di autoincremento è sempre quello successivo al valore più alto.
Io sto passando tutti i progetti da sql server a mysql.
Perchè???? Soldi. Fino ad ora il mio provider mi offriva le licenze in
modalità ASP (ovvero in affitto).
Ho due server internet, tra poco tre. Vai a comprare tre licenze processore
di SQLSERVER
Aspetta aspetta. SQL SERVER fà molte più cose. Verissimo. Quante ne usi per
progetti web????????
Ho database che contano anche 1 Milione di record. Passando a MYSQL non ho
perso nulla, anzi sulle query classiche ho guadagnato in velocità.
SQL SEVER è sicuramente un database molto più completo, soprattutto a
livello amministrativo. A livello di progetti web il suo utilizzo non è
giustificato.
Saluti

 Io sto passando tutti i progetti da sql server a mysql.
Ok, d'accordo su tutto il fronte SQL Server e Web...

E' orami più di un mese che studio MYSQL e sinceramente è un buon database.
Se pensi al fatto che la insert viene gestita in maniera atomica il fatto di
assegnare a mano un valore all'autoincrement non può creare problemi al
motore. Semmai è un problema di logica applicativa.
Quello che hai visto all'inizio del thread è in pratica un backup del
database. Infatti in MYSQL uno dei metodi di backup è quello di fare il dump
del db che crea un file di testo in  SQL (una serie di INSERT ....)
MYSQL non è certamente esente da problemi. A livello amministrativo è un bel
casotto. Finalmente c'è una bella utility sul sito 
MYSQL.COM
 però è ancora
in ALPHA
Ti posso però dire che va veloce. A fronte di un SQL un pò meno complesso
(le sottoquery sono ancora in Beta)
Se ci devi lavorare in ASP o VB ti scontri in alcune problematiche come
quella che ha originato questa discussione.
MYSQL non supporta i cursori lato server che vengono gestiti dal driver ODBC
che non è proprio una favola.
Esiste anche un driver OLEDB che però in giro sembra non essere molto
stabile.
Il cursore lato server per una applicazione WEB può essere sinceramente
evitato. Non credi?
xabaras

 MYSQL non è certamente esente da problemi...
Il resto cos'è? Spam?

Ma quale spam.
Ho semplicemente indicato pregi e difetti.

 di SQLSERVER
Scusami, per quanto riguarda mysql e il costo....
Sul libro che ho letto di mysql(Apogeo-Mysql-Collana SAMS)
è critto che fin quando usi il database per applicazioni
da cui non si ricava profitto non si deve acquistare licenza.
Nel caso si trae un profitto dall'uso del database mysql bisogna 
comprare una licenza, che se non sbaglio costa intorno ai 200$.
Il libro è di novembre 2000. E' cambiato qualcosa??
Corregimi se sbaglio!
Saluti
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Non è proprio così.
Mysql è sotto licenza GPL
Il concetto della GPL non è se ci guadagni paghi.
Il problema di offrire un server MYSQL su un server web a clienti che ne
usano le funzionalità ancora non l'ho inquadrato nell'ambito della GPL.
In ogni caso 200$ sono un'inezia in confronto al costo di SQLSERVER e penso
che glie li arò a prescindere.
Saluti