2012-09-05 5 views
-3

J'ai utilisé cette requête dans le studio de gestion sql et cela fonctionne, j'ai essayé une requête raccourcie sans la condition and et cela fonctionne, pourquoi la condition and briser le code?requête de mise à jour ne fonctionne pas C#

string dbQuery = "update log_file set updated = @true where urn = @urn and companyid = @companyid"; 
cmd.Parameters.Add(new SqlParameter("@urn", SqlDbType.Int)).Value = urn; 
cmd.Parameters.Add(new SqlParameter("@companyid", SqlDbType.Int)).Value = companyid; 
cmd.Parameters.Add(new SqlParameter("@true", SqlDbType.Bit)).Value = 0; 

cmd.CommandText = (dbQuery); 
cmd.CommandType = CommandType.Text; 
cmd.Connection = conn; 
cmd.ExecuteNonQuery(); 
+1

Effacer votre question. – SMK

+0

Quelle base de données utilisez-vous? –

+1

Que dit l'erreur? – podiluska

Répondre

1
cmd.Parameters.Add(new SqlParameter("@true", SqlDbType.Bit)).Value = false; 

Si vous voulez utiliser la valeur 0, remplacer le paramètre de type avec Int

+2

cela signifierait que la requête raccourcie ne fonctionnerait pas mais elle le fait, plus j'ai essayé de changer les types en int et bit, et en changeant les types dans sql server et ça ne marche toujours pas –

+0

@Candie: Avez-vous une référence pour ne pas pouvoir utiliser 0? J'ai eu un bref coup d'oeil (parce que cela m'a surpris) et n'a pas pu trouver quoi que ce soit disant que ... Vu 1/0 fonctionne en SQL je serais surpris si les pilotes .NET ne le permettaient pas ... – Chris

2

Si and companyid = @companyid est à l'origine, il ne pas travailler (et je suppose que vous voulez parler de la mise à jour n'a pas eu lieu plutôt que d'obtenir un message d'erreur, la seule explication est que le CompanyID que vous passez est incorrect. Vos tests dans Management Studio utilisent probablement les valeurs que vous pensez qu'il devrait avoir plutôt que celles réellement utilisées

Vous devez vérifier que tous les paramètres sont corrects dans une session de débogage, puis déterminer pourquoi ils ne le sont pas. Remplacer par false pour le type de bit

+0

j'ai testé les valeurs et ils sont corrects, je les passe en manuel car il s'agit d'un service web donc je sais que les valeurs sont correctes –

+0

il ne fonctionne pas non plus quand je raccourcis à la clause where .. –

+0

en utilisant cette méthode je teste les valeurs System.Web.HttpContext.Current.Response.Write (sqlparameter ["@ urn"]. value); me donne les valeurs, j'ai même essayé de le coder dur. –

Questions connexes