2010-11-18 11 views
3

Ich mache den Übergang von DataTableAdapters in MSVS zum Erstellen gespeicherter Prozeduren in MS SQL Server.ASP.NET C# & Stored Procedures

Das ist was ich bisher habe.

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); 
       } 
      } 
     } 
    } 

Ich möchte alle Zeilen/Spalten greifen und sie in einem Datensatz speichern und die Werte an meinem Willen zurück verwenden für alles, was ich will. Was fehlt mir, um dies zu erreichen? Oder wenn jemand einen Artikel hat, der auch helfen könnte?

Ich aktualisierte den Code zu verwenden using.

Ich denke, der Code langsam es wird immer ...

+2

Hinweis: Sie wahrscheinlich in die Gewohnheit, mit 'using' für Dinge wie' SqlCommand', 'SqlConnection', etc –

+0

definetely bekommen sollte. "spät geöffnet, früh geschlossen". Auch - sind Sie sicher, dass diese Felder "VarChar" und nicht "NVarChar" sind? – RPM1984

+0

Gleich zu Beginn des On_Click werfe ich eine Verwendung rein? Irgendwelche Codeausschnitte oder Artikel? – balexander

Antwort

2

Dieser Code-Schnipsel funktioniert:

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

Ich habe den Code feuern, wenn eine Schaltfläche geklickt wird, also was soll ich RETURN mit ersetzen? – balexander

+0

geben Sie nichts zurück, ändern Sie meine Funktionsdeklaration in Ihre submission_click-Ereignisdeklaration, und löschen Sie die return-Anweisung. –

0

ich falsch sein kann, aber ich würde erwarten, dass die folgenden arbeiten:

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

(vorausgesetzt, Sie wollen die nullte Tabelle füllen)

+0

Ich möchte alles in ein nettes organisiertes Set zurückgeben und den geringsten Code verwenden, um es zu referenzieren. – balexander

+0

@ Bry4n ein feines Ziel - ich verstehe nicht, dass das in Bezug auf meine Antwort bedeutet, obwohl. –

+0

Ich weiß es nicht. Ich kenne wahrscheinlich die richtige Frage nicht. Ich habe nie mit SPs in C# gearbeitet. Ich benutze hauptsächlich ColdFusion bei der Arbeit, was sehr unterschiedlich ist. Wie verwende ich DataSets und einen ExecuteReader? Was muss in oder aus der Verbindung sein? ha – balexander

Verwandte Themen