Dans mon code, aucune de ces requêtes ne semble être en cours d'exécution. L'étiquette de débogage imprime comme "fin" donc il exécute quelque chose à l'intérieur de ce bloc de code, juste apparaît qu'il n'aime pas les requêtes?ASP.net pourquoi ces requêtes ne s'exécutent-elles pas?
// Check input is all valid
if (Page.IsValid)
{
debug.Text = "begin";
using (SqlConnection cn = new SqlConnection(
ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString()))
{
// Verify that username is unique
using (SqlCommand cmd = new SqlCommand(
"UPDATE tblSiteSettings SET isActive = 0", cn))
{
cn.Open();
cn.Close();
}
using (SqlCommand cmd = new SqlCommand(
"INSERT INTO tblSiteSettings (allowProductRatings, allowComments, " +
"siteName, settingDate, isActive) VALUES (@allowRatings, " +
"@allowcomments, @siteName, getDate(), 1)", cn))
{
cmd.Parameters.Add("@allowRatings", SqlDbType.Bit).Value = 1;
cmd.Parameters.Add("@allowcomments", SqlDbType.Bit).Value = 1;
cmd.Parameters.Add("@siteName", SqlDbType.VarChar, 128).Value = "lol";
cn.Open();
cn.Close();
}
debug.Text = "end";
}
}
Quelques questions:
- Pourquoi sont-ils pas exécutaient?
- Dans l'ASP classique pour les insertions, les mises à jour et les suppressions, j'utiliserais con.Execute (requête) comme supposé utiliser un jeu d'enregistrements, est-ce que j'exécute ma déclaration de mise à jour correctement ici?
- Ma conception des requêtes est-elle bonne ou devrais-je les exécuter différemment?
Merci, quelle est la différence entre ExecuteNonQuery et ExecureScalar comme suggéré dans l'autre réponse? –
@Tom - Je viens de développer cela il y a environ 10 secondes pour vous =) avec les liens MSDN pertinents pour enregistrer la réponse à un copier-coller de MSDN, de sorte que vous pouvez obtenir le détail complet ici =) – Rob
ExecuteScalar est utilisé pour renvoyer des valeurs uniques d'un SELECT en tant qu'objet. ExecuteNonQuery renvoie un int pour indiquer les lignes affectées. Tout expliqué dans les liens ... –