2010-12-15 1 views
3

Voici mon événement onclick:ASP C# | Base de données de mise à jour en utilisant SQL et procédures stockées

protected void Submit_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     using (SqlConnection con = new SqlConnection(conString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("administratorUpdate", con)) 
      { 
       cmd.Parameters.Add("@originalID", SqlDbType.VarChar).Value = IDHF.Value; 
       cmd.Parameters.Add("@firstName", SqlDbType.VarChar).Value = firstNameTB.Text; 
       cmd.Parameters.Add("@lastName", SqlDbType.VarChar).Value = lastNameTB.Text; 
       cmd.Parameters.Add("@userName", SqlDbType.VarChar).Value = userNameTB.Text; 
       cmd.Parameters.Add("@emailAddress", SqlDbType.VarChar).Value = emailAddressTB.Text; 
       cmd.CommandType = CommandType.StoredProcedure; 
      } 
     } 
     GetAllRPT.DataBind(); 
     Label ErrorMessageLabel = (Label)Master.FindControl("ErrorMessageLabel"); 
     new myFunctions().DisplayUserMessage("success", "Administrator Updated!", ErrorMessageLabel); 
     AdminForm.Visible = false; 
    } 
    catch (Exception ex) 
    { 
     Label ErrorMessageLabel = (Label)Master.FindControl("ErrorMessageLabel"); 
     new myFunctions().DisplayUserMessage("error", ex.Message, ErrorMessageLabel); 
    } 
} 

Voici ma procédure stockée [administratorUpdate]:

ALTER PROCEDURE [dbo].[administratorUpdate] 
    @originalID UNIQUEIDENTIFIER, 
    @firstName varchar (100), 
    @lastName varchar (100), 
    @userName varchar (100), 
    @emailAddress varchar (100), 
    @password varchar (100), 
    @isActive bit 
AS 

UPDATE administrator 
SET userName = @userName, 
    emailAddress = @emailAddress, 
    password = @password, 
    firstName = @firstName, 
    lastName = @lastName, 
    isActive = @isActive 
WHERE 
    ID = @originalID 

Le code exécute et fait le message de réussite mais le datatable doesn Ne pas mettre à jour. Qui sait pourquoi? Je suis nouveau à l'utilisation des procédures stockées dans ASP.

+0

@Raj Plus Merci, je ne savais pas comment formater le SQL correctement – balexander

+0

Qu'est-ce que c'est avec vos conventions de nommage? – Phill

+0

@Phill Que voulez-vous dire? Affaire de chameau? – balexander

Répondre

5

Exécutez-vous la commande?

using (SqlConnection con = new SqlConnection(conString)) 
    { 
     conn.Open(); //this was missing 

     using (SqlCommand cmd = new SqlCommand("administratorUpdate", con)) 
     { 
      cmd.Parameters.Add("@originalID", SqlDbType.VarChar).Value = IDHF.Value; 
      cmd.Parameters.Add("@firstName", SqlDbType.VarChar).Value = firstNameTB.Text; 
      cmd.Parameters.Add("@lastName", SqlDbType.VarChar).Value = lastNameTB.Text; 
      cmd.Parameters.Add("@userName", SqlDbType.VarChar).Value = userNameTB.Text; 
      cmd.Parameters.Add("@emailAddress", SqlDbType.VarChar).Value = emailAddressTB.Text; 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.ExecuteNonQuery(); //this was missing. 
     } 

     conn.Close(); 
    } 
+2

Également besoin d'ouvrir la connexion à la base de données en faisant con.Open(); avant de faire cmd.ExecuteNonQuery(); – Dismissile

+0

@Dismissile Je pensais que lorsque j'utilise 'using', c'est ouvert quand les données sont dans cette déclaration. Je peux tirer des données vers le bas, mais l'envoi de données je suppose est différent? – balexander

+0

Cela aussi. J'ai modifié la réponse avec la bonne mise en œuvre. –

1

Mon astuce est de faire ici ce en mode débogage sans Try/Catch. Les erreurs générées indiqueront le problème.

Questions connexes