J'essaie d'appeler la méthode ExecuteNonQuery() de deux objets différents de la classe OracleCommand. Les deux objets utilisent le même objet de connexion mais ont des commandText et des paramètres différents. J'utilise ODP.net, C# (framework .net 2.0) et Oracle 10g.Comment exécuter deux méthodes command.ExecuteNonQuery() en utilisant une connexion unique?
extrait de code est le suivant:
// OpenDatabaseConnection() methods checks and opens database connection
bool connectionOpened = OpenDatabaseConnection();
if (connectionOpened)
{
command.ExecuteNonQuery();
commitCommand.ExecuteNonQuery();
}
Avant d'exécuter deux déclarations ci-dessus, je vérifie si la connexion est ouverte ou not.If son pas ouvert, je suis connexion d'ouverture. Mon problème est, après command.ExecuteNonQuery();
est exécuté, la connexion se ferme et je reçois une exception de «Connexion doit être ouverte pour effectuer cette opération» lorsque le contrôle tente d'exécuter la deuxième instruction. Pourquoi la connexion se ferme-t-elle automatiquement après l'exécution de la méthode ExecuteNonQuery()?
Quelqu'un peut-il s'il vous plaît me dire comment faire face à cette situation? Dans le deuxième objet de commande, j'essaie juste de valider les modifications, rien d'autre. Comment valider les modifications sans utiliser de transactions?
Merci à l'avance
**
EDIT
** Je voulais juste savoir, quelle est la meilleure pratique pour ouvrir et fermer la connexion? Allons-nous ouvrir la connexion à chaque ExecuteNonQuery(), ExecuteScalar(), etc. méthodes et fermer les connexions tant que cela est fait ou ouvrir la connexion au démarrage de l'application et maintenir la connexion ouverte jusqu'à la fin de l'application? S'il vous plaît éclairer !!
s'il vous plaît ajouter un peu plus de code –
créez la commande que vous dans une déclaration à l'aide? Je soupçonne que cela pourrait être la raison. – Aliostad