2016-05-21 1 views
1

Ich implementiere Bodybuilding Gym Website in asp.net und C#. Ich möchte Gym-Mitglieder für Klassen wie z. Yoga, ABS. Ich möchte sie zu der Tabelle Training und Spalte namens Teilnehmer hinzufügen. Die Tabelle hat 6 Spalten (ID, Datum, Typ, Beschreibung, Status, Teilnehmer). Hier ist mein Code.Zelle in einer Datenbank aktualisieren, aber den vorherigen Wert nicht löschen

GridViewRow row = DataGrid1.SelectedRow; 
string hour = row.Cells[1].Text; 
string type = row.Cells[2].Text; 
string participant = Session["New"].ToString() + ", "; 

SqlConnection EnrolForConn = new SqlConnection(ConfigurationManager.ConnectionStrings["LoginConnectionString"].ConnectionString); 
EnrolForConn.Open(); 
string EnrolForStatement = "update [Workout] set [Participants][email protected] where Date = '" + hour + "' and Type = '" + type + "'"; 
SqlCommand EnrolForCommand = new SqlCommand(EnrolForStatement, EnrolForConn); 
EnrolForCommand.Parameters.AddWithValue("@Participants", participant); 

int x = EnrolForCommand.ExecuteNonQuery(); 
if (x == 0) 
{ 
    ScriptManager.RegisterStartupScript(this, this.GetType(), "alertMessage", "alert('Error !!!');", true); 
} 
else 
{ 
    ScriptManager.RegisterStartupScript(this, this.GetType(), "alertMessage", "alert('You have been enrolled for class !!!');", true); 
} 

EnrolForConn.Close(); 

Wenn ich den ersten Teilnehmer hinzufüge, funktioniert es. Aber wenn ich das zweite hinzufüge (in einem anderen acount eingeloggt), löscht es das erste. Ich möchte die vorherigen Teilnehmer nicht löschen.

Auch möchte ich die Anzahl der Teilnehmer z. max 10 (Ich verwende Komma, um die Teilnehmer zu trennen).

Irgendwelche Ratschläge? ;) Vielen Dank im Voraus !!!

Antwort

4

Sie aktualisieren gerade Spalte mit dem Wert in Teilnehmer, so nur die letzte wird beibehalten werden.

Um alle Teilnehmer im Feld zu haben, können Sie so etwas wie die folgenden schreiben:

// get all the participants in a list 
// e.g. IList<String> participantsList 
participant = String.Join(", ", participantsList); 

Side Hinweise:

Allerdings empfiehlt es sich, Ihre Daten zu normalisieren und haben Sie eine separate Tabelle für die Teilnehmer. Auf diese Weise können Sie eine Tabelle für Benutzer/Teilnehmer definieren und nur eine X-Beziehung zwischen Event und Teilnehmer speichern.

Nicht nur dieser Speicher wird gespeichert, sondern zukünftige Abfragen, die sich mit Ereignissen und Teilnehmern befassen, werden einfacher zu schreiben sein (kein String-Splitting).

Versuchen Sie auch, Parameter für alles zu verwenden, die parametrisiert werden können:

string EnrolForStatement = "update [Workout] set [Participants][email protected] where Date = @Hour and Type = @Type"; 
EnrolForCommand.Parameters.AddWithValue("@Hour", hour); 
EnrolForCommand.Parameters.AddWithValue("@Type", type); 
Verwandte Themen