comment utiliser sqltransaction dans c #
Je suis à l'aide de code suivant pour exécuter deux commandes à la fois. J'ai utilisé sqltransaction pour assurer soit la totalité de la commande est exécutée ou annulée.Quand je lance mon programme sans "transaction" de l'exécuter correctement, mais lorsque j'utilise "transaction" avec eux, ils montrent d'erreur. Mon code est comme suit;
SqlTransaction transaction = connectionsql.BeginTransaction();
try
{
SqlCommand cmd1 = new SqlCommand("select account_name from master_account where NOT account_name = 'BANK' AND NOT account_name = 'LOAN'", connectionsql);
SqlDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
comboBox1.Items.Add(dr1[0].ToString().Trim());
}
cmd1.Dispose();
dr1.Dispose();
SqlCommand cmd2 = new SqlCommand("select items from rate",connectionsql);
SqlDataReader dr2 = cmd2.ExecuteReader();
while (dr2.Read())
{
comboBox2.Items.Add(dr2[0].ToString().Trim());
}
cmd2.Dispose();
dr2.Dispose();
transaction.Commit();
dateTimePicker4.Value = dateTimePicker3.Value;
}
catch(Exception ex)
{
transaction.Rollback();
MessageBox.Show(ex.ToString());
}
et de l'erreur:
source d'informationauteur Sonu_Orai
Vous devez vous connecter pour publier un commentaire.
Vous avez à dire à votre SQLCommand objets à utiliser la transaction:
ou dans le constructeur:
Assurez-vous d'avoir la connectionsql objet ouvert, trop.
Mais tout ce que vous faites sont des instructions SELECT. Les Transactions serait plus utile lorsque vous utilisez des instructions INSERT, UPDATE, etc type d'actions.
L'exemple suivant crée une occurrence de SqlConnection et un SqlTransaction. Il montre également comment utiliser la BeginTransaction, Commit et Rollback méthodes. La transaction est annulée sur une erreur, ou si elle est éliminée sans avoir d'abord été commis. Try/Catch de la gestion d'erreur est utilisée pour gérer les erreurs lors de la tentative de valider ou d'annuler la transaction.
Voir SqlTransaction Classe
Bien, je ne comprends pas pourquoi êtes-vous utilisé la transaction dans le cas où vous faites un
select
.Opération est utile lorsque vous apportez des modifications (ajout, modification ou suppression) des données à partir de la base de données.
Retirer de la transaction, sauf si vous utilisez
insert
update
oudelete
étatsVous pouvez créer un
SqlTransaction
à partir d'unSqlConnection
.Et l'utiliser pour créer n'importe quel nombre de
SqlCommands
Ou
Si la défaillance de commandes jamais cause des changements inattendus ne pas utiliser la transaction.
si la défaillance de commandes pourrait cause des changements imprévus, les mettre dans un bloc Try/Catch et de la restauration de l'opération en un autre bloc Try/Catch.
Selon MSDN:
Voici un exemple de code:
De sorte que vous n'avez pas besoin de s'inquiéter à propos de l'app en cours de fermeture.
Mise à jour ou de Suppression auprès de transaction sql
D'abord, vous n'avez pas besoin d'une transaction puisque vous êtes juste de l'interrogation des instructions select et depuis qu'ils sont à la fois instruction select, vous pouvez simplement de les combiner en une seule requête séparés par l'espace et utiliser un jeu de données pour obtenir les toutes les tables extraites. Ses mieux de cette façon parce que vous avez fait une seule transaction à la base de données parce que les transactions de base de données sont chers donc votre code est plus rapide.
Deuxième de vous avez vraiment utiliser une transaction, suffit d'attribuer à la transaction, à la SqlCommand comme
Et aussi il suffit d'utiliser une SqlCommand ne pas déclarer plus d'un, puisque les variables consomment de l'espace et nous sommes également sur le thème de rendre votre code plus efficace, faire que par l'affectation de commandText différents de la chaîne de requête et de les exécuter comme