2009-09-17 4 views
0

J'utilise Visual Studio 2008 avec C# pour accéder à une base de données MySql. À ce stade, je me suis appuyé sur Visual Studio pour créer le code pour le DataSet, et cela semble avoir causé un problème. Si la base de données est inaccessible (c'est-à-dire qu'elle n'est pas en cours d'exécution), elle donne une exception "MySqlException was unshandled", "impossible de se connecter à l'un quelconque des hôtes MySQL spécifiés".Comment puis-je gérer une exception dans DataSet.Designer.cs?

Ma question est quelle est la meilleure façon de gérer cette exception? Je voudrais être capable de le manipuler sans altérer le fichier designer.cs, mais si cela n'est pas possible alors n'importe quelle façon de résoudre cela fera l'affaire.

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] 
    [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] 
    public virtual int Fill(customerDataSet.addressesDataTable dataTable) { 
     this.Adapter.SelectCommand = this.CommandCollection[0]; 
     if ((this.ClearBeforeFill == true)) { 
      dataTable.Clear(); 
     } 
// Exception occurs on the line below. 
     int returnValue = this.Adapter.Fill(dataTable); 
     return returnValue; 
    } 
+0

Quand recevez-vous cette exception? dans le concepteur de studio visuel? dans votre code? Si vous obtenez l'exception dans votre code, pourriez-vous s'il vous plaît poster la partie pertinente de celui-ci? –

+0

Les exceptions ne se produisent pas dans un fichier. Quelle est la méthode? –

Répondre

0

Lors de la manipulation des exceptions, vous devez attraper l'exception au plus tôt que vous avez quelque chose que vous voulez faire en réponse à l'exception. Un DataSet est un mauvais endroit pour gérer l'événement de votre base de données étant inaccessible; Comment le reste de votre application sera-t-elle avertie que cette erreur s'est produite?

Dans votre cas, comment souhaitez-vous gérer ce MySqlException projeté? Dans la plupart des cas, une base de données inaccessible va être une erreur difficile à récupérer. Vous pouvez laisser l'exception grimper dans votre processus actuel et simplement afficher un message d'erreur, ou vous pouvez essayer à nouveau le processus, ou vous pouvez passer à une autre base de données.

Il me semble que vous pourriez vouloir faire une lecture générale autour du but des exceptions et pourquoi le mécanisme de «jeter» existe. Ils ne sont pas simplement là pour vous embêter à écrire des blocs d'essai!

+0

Je pense que vous avez fait un bon point là-bas, je vais examiner dans le test de la chaîne de connexion avant que le DataSet est utilisé. Va revenir un peu plus tard avec des résultats. – Severus

+0

J'ai créé une méthode distincte qui tente d'ouvrir une connexion, et si elle échoue, elle est interceptée et me fait savoir via une boîte de message que la connexion a échoué sans se bloquer. Il fait ce dont j'ai besoin pour le faire merci de votre aide. – Severus

Questions connexes