2009-06-30 7 views
0

J'ai une table table1 avec les champs id(int), name(nchar), grade(real). Le code suivant ne fonctionne pas. Il n'y a pas d'erreurs ou d'avertissements. Le code exécute bien, mais le nombre de lignes affectées = 0.pourquoi sql supprimer la requête ne fonctionne pas

MSSQL Serveur

sqlConnection1.Open(); 
SqlCommand cmd = new SqlCommand("Delete from [table1] where [id] = 1", sqlConnection1); 
int c = cmd.ExecuteNonQuery(); 
sqlConnection1.Close(); 

Toutes les autres requêtes fonctionnent bien.

+2

Peut-être un commentaire daft mais y a-t-il un Id 1? –

+0

On dirait qu'il n'y a pas d'enregistrement avec l'ID 1? –

Répondre

0

Je sais que cela peut sembler stupide, mais y a-t-il des données dans l'appel avec un ID de 1? Pouvez-vous voir l'exécution via SQL Profiler? Que se passe-t-il si vous l'exécutez via SSMS?

1

Pensées:

  • est là une ligne avec [id] 1
  • Avez-vous un déclencheur qui tire?

je pense serait le deuxième ... le nombre est après déclencheurs ont été pris en compte, et est le nombre de lignes de la dernière opération.

+0

+1 pour le déclencheur. OP doit également vérifier les clés étrangères «ON DELETE RESTRICT». – MartinStettner

0

La requête fonctionne-t-elle lorsque vous l'exécutez dans Sql Management studio?

2

Une légère expansion de ce que d'autres ont déjà demandé. Êtes-vous certain qu'il existe des enregistrements à supprimer dans votre table cible? De plus, êtes-vous certain que vous obtenez la table de la bonne base de données? Il est possible que la valeur par défaut soit tempdb, par exemple, et qu'il se trouve simplement une table avec le nom de la cible et une colonne id.

d'abord faire une sélection à partir de l'invite SQL pour assurer il y a des éléments du type que vous recherchez:

 
SELECT TOP 10 * FROM [database].[schema].[table1] WHERE [id] = 1 

Si cela donne des résultats, essayez de changer votre commande pour indiquer explicitement la base de données et le schéma ainsi:

 
DELETE FROM [database].[schema].[table1] WHERE [id] = 1 

0

outre le commentaire de Marc Gravell sur vous déclencheurs devez également vérifier, s'il y a des principales contraintes ON DELETE RESTRICTION T` en place (et le message d'erreur disparaît en quelque sorte avant d'arriver à vous ...)

Questions connexes