2010-11-18 7 views
3

Je fais la transition de DataTableAdapters dans MSVS à la création de procédures stockées dans MS SQL Server.Procédures C# et stockées ASP.NET

C'est ce que j'ai jusqu'à présent.

protected void Submit_Click(object sender, EventArgs e) 
    { 
     var conString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); 
     using (SqlConnection con = new SqlConnection(conString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("getAdministrators", con)) 
      { 
       cmd.Parameters.Add("@userName", SqlDbType.VarChar).Value = userNameTB.Text; 
       cmd.Parameters.Add("@password", SqlDbType.VarChar).Value = passwordTB.Text; 
       cmd.CommandType = CommandType.StoredProcedure; 
       using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
       { 
        DataSet ds = new DataSet(); 
        da.Fill(ds); 
       } 
      } 
     } 
    } 

Je veux de saisir tous les lignes/colonnes et de les stocker dans un DataSet et utiliser les valeurs renvoyées à ma volonté pour tout ce que je souhaite. Qu'est-ce qui me manque pour accomplir cela? Ou si quelqu'un a un article qui pourrait aider aussi bien? J'ai mis à jour le code pour utiliser le code using.

Je pense que le code est lentement pour s'y rendre ...

+2

Note: vous devriez probablement prendre l'habitude d'utiliser 'using' pour des choses comme' SqlCommand', 'SqlConnection', etc –

+0

definetely. "ouvrir tard, fermer tôt". aussi - êtes-vous sûr que ces champs sont 'VarChar' et non' NVarChar'? – RPM1984

+0

Au tout début du On_Click je lance une utilisation là-dedans? Des extraits de code ou des articles? – balexander

Répondre

2

Cet extrait fonctionne:

public static DataSet GetAll(int id) 
    { 
     using (SqlConnection con = new SqlConnection(Database.ConnectionString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("sp_ContactGetAll", con)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
       { 
        DataSet dsData = new DataSet(); 
        da.Fill(dsData); 
        return dsData; 
       } 
      } 
     } 
    } 
+0

J'ai le code qui déclenche quand un bouton est cliqué cependant, donc que dois-je remplacer RETOUR avec? – balexander

+0

ne retourne rien, change ma déclaration de fonction dans votre déclaration d'événement submit_click et supprime l'instruction return. –

0

Je peux me tromper, mais je pense ce qui suit à travailler:

using(var reader = cmd.ExecuteReader()) { 
    ds.Tables[0].Load(reader); 
} 

(en supposant que vous souhaitez remplir la table zeroth)

+0

Je veux tout retourner dans un ensemble bien organisé et utiliser le moins de code pour le référencer. – balexander

+0

@ Bry4n un bon objectif - Je ne comprends pas que cela signifie en termes de ma réponse, cependant. –

+0

Je ne sais pas. Je ne connais probablement pas la bonne question à poser. Je n'ai jamais travaillé avec des SP en C# J'utilise principalement ColdFusion au travail ce qui est très différent. Comme est-ce que j'utilise DataSets et un ExecuteReader? Qui doit être dans ou hors de la connexion? ha – balexander