2014-06-25 2 views
0

J'ai deux oledbcommnds utilisés pour mettre à jour une table dans une base de données. L'un d'eux fonctionne (ajouter des données aux champs vides) mais l'autre conçu pour vider les données ne fonctionne pas.Commande UPDATE ne pas mettre à jour les données

Première mise à jour commnd qui fonctionne (ajoute des valeurs à vider les données):

conn.Open(); 
OleDbDataAdapter adapter1 = new OleDbDataAdapter(); 
adapter3.UpdateCommand = conn.CreateCommand(); 
adapter3.UpdateCommand.CommandText = "UPDATE table SET Occup=Yes, Profesor=?"; 
adapter3.UpdateCommand.Parameters.AddWithValue("p1", "name"); 
adapter3.UpdateCommand.ExecuteNonQuery(); 
conn.Close(); 

Le second, qui ne fonctionne pas (remplace les valeurs)

conn.Open(); 
OleDbDataAdapter adapter3 = new OleDbDataAdapter(); 
adapter3.UpdateCommand = conn.CreateCommand(); 
adapter3.UpdateCommand.CommandText = "UPDATE table SET Occup=No, Profesor=?"; 
adapter3.UpdateCommand.Parameters.AddWithValue("p1", "replace_prof_name"); 
adapter3.UpdateCommand.ExecuteNonQuery(); 
conn.Close(); 

Lors de l'exécution du second code, Je ne reçois aucune erreur. J'ai mis un compteur et montre le bon nombre d'opérations mais je ne vois pas de modifications.

+0

Occup = Non dans le second exemple semble causer des problèmes - "Non" peut être un mot réservé SQL afin si elle est exécutée sans échapper (comme Occup = 'Non') alors la requête peut se comporter étrange – tchrikch

+0

vous faites référence 'adapter3' au lieu de' adapter1' –

+0

@tchrikch It ** est ** un mot-clé réservé mais cela devrait donner une erreur as: '" Syntaxe incorrecte proche de ... "'. OP dit qu'il n'a pas eu d'erreurs. –

Répondre

0

Vous êtes à tort référence adapter3 au lieu de adapter1 ..

Essayez cette

conn.Open(); 
OleDbDataAdapter adapter1 = new OleDbDataAdapter(); 
adapter1.UpdateCommand = conn.CreateCommand(); 
adapter1.UpdateCommand.CommandText = "UPDATE table SET Occup=Yes, Profesor=?"; 
adapter1.UpdateCommand.Parameters.AddWithValue("p1", "name"); 
adapter1.UpdateCommand.ExecuteNonQuery(); 
conn.Close(); 

conn.Open(); 
OleDbDataAdapter adapter3 = new OleDbDataAdapter(); 
adapter3.UpdateCommand = conn.CreateCommand(); 
adapter3.UpdateCommand.CommandText = "UPDATE table SET Occup=No, Profesor=?"; 
adapter3.UpdateCommand.Parameters.AddWithValue("p1", "replace_prof_name"); 
adapter3.UpdateCommand.ExecuteNonQuery(); 
conn.Close(); 
+0

Ils ne sont pas dans la même fonction donc peu importe le nom que j'utilise. – user3605321

+0

@yes mais le nom de la déclaration et de la définition doit être le même. A la première partie –

Questions connexes