TEST ADODB CONNECTION

di visualrate il
7 risposte
Salve a tutti
in un mio gestionale leggo i dati da un db ACCESS in questo modo:

stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
stringa = stringa & miadirectory & "\MIODB.mdb"
cn = New ADODB.Connection
rs = New ADODB.Recordset
'If cn.State = ConnectionState.Open Then MsgBox("APERTA")
cn.Open(stringa)
Dim dacercare As String
dacercare = "PV"
'If rs.State = ConnectionState.Open Then MsgBox("APERTA")
rs.Open("SELECT * FROM GARE_T WHERE IDEN like '" & dacercare & "'", cn, 3, 3)
Dim esistenti As Integer = rs.RecordCount
Me.TextBox11.Text = esistenti + 1
rs.Close()
cn.Close()
cn = Nothing
rs = Nothing

e funziona abbastanza bene, l'unico inconveniente che vorrei evitare è che se il db per qualsiasi motivo fosse aperto in modifica manuale o dalla connessione del programma non mi andasse in errore con conseguente blocco del programma.
Ho provato con:
If cn.State = ConnectionState.Open Then MsgBox("CONNESSIONE APERTA")
ma non funziona....
come posso fare a far si che in quel caso il programma mi dica che la connesione e' "OCCUPATA"..??
qualcuno potrebbe aiutarmi..??
Grazie infinite..!!

7 Risposte

  • Non mi è chiaro quale sia esattamente il tuo problema, ma innanzitutto credo che tu debba riconsiderare le classi che stai utilizzando per accedere al database e sostituire le vecchie OLE DB con le classi di ADO.NET (vedi la documentazione relativa per approfondimenti).

    Lì troverai anche esempi su come usare correttamente le classi per aprire connessioni, eseguire comandi e rilasciare le risorse quando necessario.

    Ciao!
  • Intanto grazie per la risposta..!!
    Hai ragione ma non posso riscrivere tutto da capo mi risulterebbe complicato, magari nel prossimo programmino userò ADO.net....
    non c'è un modo senza cambiare le OLE db..??
    GRazie ancora..!!
  • visualrate ha scritto:


    non c'è un modo senza cambiare le OLE db..??
    Ma il problema specifico che si presenta qual è?
    Nel tuo codice vai a creare e ad aprire la connessione, quindi come è possibile che questa sia già aperta se viene creata in quel contesto?
  • MI spiego meglio.....
    il DB ACCESS e' accessibile da più postazioni essendo in rete, alle volte capita che se ci sta lavorando una postazione l'altra tenta di connettersi ma trovando la connessione occupata/aperta va chiaramente in errore....
    io vorrei che in quel caso il programma mi avverta che la connessione e' "OCCUPATA".....
    Spero di essermi spiegato meglio.....
  • Di quale errore parli e in quale linea avviene? Cerca di essere preciso.

    Questo codice sa tanto di vb6...
  • Infatti il codice lo usavo iv VB6 essendo quello che sapevo utilizzare....
    comunque come soluzione al problema ho pensato di gestire eventuali errori con
    Try
    ----------------CODICE
    Catch
    -----------MESSAGGIO EVENTUALE ERRORE
    end Try

    in maniere tale che il programma segnalerà eventuali errori ma non si bloccherà.....
    che dite è la strada giusta..??
Devi accedere o registrarti per scrivere nel forum
7 risposte