Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Riconnessioni a db
Forum - C# / VB.NET - Riconnessioni a db

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
cuore napoletano (Normal User)
Pro


Messaggi: 129
Iscritto: 03/02/2011

Segnala al moderatore
Postato alle 16:45
Venerdì, 18/05/2018
Salve,
sto scrivendo un gestionale con vb2010 che si collega a un db access2000.
Ho impostato il codice in modo che dopo ogni connessione al db ed eseguita l'operazione
la connessione viene chiusa.
Ho notato che talune volte nonostante venga richiesta l'apertura di una
connessione ricevo l'eccezione di connessione chiusa.
Per tale motivo avrei pensato di inserire il codice per la connessione al db
in un ciclo DO UNTIL...LOOP per ripetere l'operazione di connessione
se la connessione risulta chiusa.
Codice sorgente - presumibilmente VB.NET

  1. Dim cnn As System.Data.OleDb.OleDbConnection = connessioneOleDB.connessione
  2.         Do Until (cnn.State = ConnectionState.Open)
  3.             Dim OrarioFinePausa As Date = Date.Now.AddMilliseconds(3000)
  4.             Do Until Date.Now > OrarioFinePausa
  5.                 Application.DoEvents()
  6.             Loop
  7.             cnn = connessioneOleDB.connessione
  8.         Loop



Nb: cnn riceve l'oggetto connesso per mezzo di una chiama a una classe esterna
Che ne pensate?
Grazie e saluti

Ultima modifica effettuata da cuore napoletano il 18/05/2018 alle 16:50
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 18:41
Venerdì, 18/05/2018
Testo quotato

Postato originariamente da cuore napoletano:

Salve,
sto scrivendo un gestionale con vb2010 che si collega a un db access2000.
Ho impostato il codice in modo che dopo ogni connessione al db ed eseguita l'operazione
la connessione viene chiusa.
Ho notato che talune volte nonostante venga richiesta l'apertura di una
connessione ricevo l'eccezione di connessione chiusa.
Per tale motivo avrei pensato di inserire il codice per la connessione al db
in un ciclo DO UNTIL...LOOP per ripetere l'operazione di connessione
se la connessione risulta chiusa.
Codice sorgente - presumibilmente VB.NET

  1. Dim cnn As System.Data.OleDb.OleDbConnection = connessioneOleDB.connessione
  2.         Do Until (cnn.State = ConnectionState.Open)
  3.             Dim OrarioFinePausa As Date = Date.Now.AddMilliseconds(3000)
  4.             Do Until Date.Now > OrarioFinePausa
  5.                 Application.DoEvents()
  6.             Loop
  7.             cnn = connessioneOleDB.connessione
  8.         Loop



Nb: cnn riceve l'oggetto connesso per mezzo di una chiama a una classe esterna
Che ne pensate?
Grazie e saluti


La routine a livello logico funziona, una mia perplessità è che anche se hai inserito Application.DoEvents()
nel loop:

            Do Until Date.Now > OrarioFinePausa
                Application.DoEvents()
            Loop

generi per 3 secondi un loop che impegna inultimente la CPU, ti consiglio di aggiungere nel loop:
Thread.Sleep(1000).
Meglio solo Thread.Sleep(3000) senza loop.

Per usare Sleep ricordati di inserire ad inizio codice: Imports System.Threading

Codice sorgente - presumibilmente VB.NET

  1. Dim cnn As System.Data.OleDb.OleDbConnection = connessioneOleDB.connessione
  2.         Do Until (cnn.State = ConnectionState.Open)
  3.             Thread.Sleep(3000)
  4.             cnn = connessioneOleDB.connessione
  5.         Loop





Ultima modifica effettuata da Carlo il 18/05/2018 alle 19:01


in programmazione tutto è permesso
PM Quote
Avatar
cuore napoletano (Normal User)
Pro


Messaggi: 129
Iscritto: 03/02/2011

Segnala al moderatore
Postato alle 18:52
Venerdì, 18/05/2018
Ciao  grazie per la risposta.

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 19:02
Venerdì, 18/05/2018
controlla ho modificato la risposta


in programmazione tutto è permesso
PM Quote
Avatar
cuore napoletano (Normal User)
Pro


Messaggi: 129
Iscritto: 03/02/2011

Segnala al moderatore
Postato alle 16:03
Mercoledì, 23/05/2018
Ho testato il codice ma non mi ha risolto il problema.
Il mio obbiettivo era che in caso la connessione non fosse andato a buon fine
ripetevo la connessione fino a quando si stabiliva la connessione,
Invece quando la connessione non funziona
non faccio altro che ottenere ripetutamente un errore non specificato.
Qualche soluzione?grazie

Ultima modifica effettuata da cuore napoletano il 23/05/2018 alle 17:05
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 2:01
Giovedì, 24/05/2018
Cosa fai per farla rifunzionare, hai un metodo manuale?
Il DB è in locale o in rete?


in programmazione tutto è permesso
PM Quote
Avatar
cuore napoletano (Normal User)
Pro


Messaggi: 129
Iscritto: 03/02/2011

Segnala al moderatore
Postato alle 10:53
Giovedì, 24/05/2018
Ciao, COME VA???
si il db è in locale, mi interfaccio con  access2000
Ho scritto una classe preposta alla connessione che richiamo da vari punti
per programma, eccola
Codice sorgente - presumibilmente VB.NET

  1. Public Class connessioneOleDB
  2.  
  3.     Shared Function connessione() As OleDbConnection
  4.         Dim cn As New OleDbConnection
  5.         cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\io\Desktop\dbprogranmma.mdb"
  6.         Try
  7.  
  8.             cnn.Open()
  9.         Catch ex As Exception
  10.             MessageBox.Show(ex.Message)
  11.  
  12.         End Try
  13.  
  14.         Return cn
  15.  
  16.     End Function


e la chiamo cosi:
Codice sorgente - presumibilmente VB.NET

  1. Dim cn As OleDbConnection = connessioneOleDB.connessione()
  2.  Do Until (cn.State = ConnectionState.Open)
  3.             Thread.Sleep(3000)
  4.             cn = connessioneOleDB.connessione
  5.         Loop
  6.         cmd.Connection = cn



Ricorro spesso aL DB.

Ho fatto un MAPPAZZONE!!! ehehe

Ultima modifica effettuata da cuore napoletano il 24/05/2018 alle 11:12
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1316
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 14:26
Giovedì, 24/05/2018
mentre non ti si connette, con Access puoi accedere al DB?


in programmazione tutto è permesso
PM Quote
Avatar
cuore napoletano (Normal User)
Pro


Messaggi: 129
Iscritto: 03/02/2011

Segnala al moderatore
Postato alle 15:56
Giovedì, 24/05/2018
il programmino lo sto usando in fase di produzione e quando si verifica l'errore
il programma termina.


Ultima modifica effettuata da cuore napoletano il 24/05/2018 alle 16:09
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo