2009-12-13 9 views
0

Parfois, lorsque mon serveur est en panne ou occupé, j'obtiens une erreur disant "connexion timeout" lors de la connexion à MySQL. Mais avec l'erreur, le programme se bloque également. Ma question est comment puis-je empêcher l'écrasement, il serait préférable d'afficher un msgbox lorsque cela se produit. manière (visual basic 2010)Gestion de l'erreur de dépassement de délai de connexion

J'utilise ce,

Dim connStr As String = "Database=mydatabase;" & _ 
        "Data Source=datasrc;" & _ 
        "User Id=myid;Password=mypass" 

Dim connection As New MySqlConnection(connStr) 

connection.Open() // I get error here 

Répondre

1

Si vous ne voulez pas voir le ThreadExceptionDialog, vous aurez besoin de prendre l'exception dans votre code. Par exemple:

Public Function ConnectToDbase() As Boolean 
    Try 
     connection.Open() 
     '--- etc 
     Return True 
    Catch ex As TimeoutException 
     MessageBox.Show(ex.Message, "Could not connect to the database") 
     Return False 
    End Try 
    End Function 

Le fardeau est maintenant le code qui utilise ConnectToDbase() pour faire quelque chose de significatif quand il retourne Faux.

+0

merci cela fonctionne mais cette fois je reçois presque 20 msgbox. –

+0

C'est le fardeau de «faire quelque chose de significatif» dont j'ai parlé. Ne continuez pas à essayer d'utiliser la base lorsque vous avez un faux retour. Peut-être que vous devriez dire à l'utilisateur d'appeler le soutien et mettre fin à votre programme. –

0

Un cela peut se produire est que si vous ne disposez pas correctement vos connexions. Par exemple, dites qu'une exception est levée en raison d'un problème dans votre code sql, et qu'il est intercepté, mais que vous ne l'appelez jamais connection.Close(). Éventuellement, vous manquerez de connexions disponibles et votre appel connection.Open() échouera et expirera en essayant de vous connecter. Pour éviter cela, vous devez créer vos connexions avec un « utilisant » bloc, comme ceci:

Using connection As New MySqlConnection(connStr), _ 
     command As New MySqlCommand("sql statement here") 

    connection.Open() 


End Using ''# connection is guaranteed to be closed here, even if an exception is thrown 
+0

il ne fonctionne pas lorsque j'appelle la fonction de connexion deuxième fois, je reçois toujours l'erreur –

Questions connexes