2015-11-04 8 views
5

Ich habe folgende C#Holen Sie die neue Primärschlüssel-ID des Datensatzes aus der SQL-Einfügeabfrage, um denselben Wert in eine andere Tabelle einzufügen?

protected void add_button_Click(object sender, EventArgs e) 
{ 
    string teamname = team_name_tb.Text; 
    string teamstatus = "Not Started"; 
    string teamnotes = team_notes_tb.Text; 
    string sprintid = sprint_select.SelectedValue; 

    string ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
    SqlConnection myConnection = new SqlConnection(ConnectionString); 

    myConnection.Open(); 

      String query = "INSERT INTO teams (team_name, status, notes) 
          VALUES (@team_name, @status, @notes); 
          INSERT INTO sprints_vs_teams (sprint_id, team_id)      
          VALUES (@sprint_id, @team_id)"; 

      SqlCommand myCommand = new SqlCommand(query, myConnection); 
      myCommand.Parameters.AddWithValue("@team_name", teamname); 
      myCommand.Parameters.AddWithValue("@status", teamstatus); 
      myCommand.Parameters.AddWithValue("@notes", teamnotes); 
      myCommand.Parameters.AddWithValue("@sprint_id", sprintid); 
      myCommand.Parameters.AddWithValue("@team_id", ????); 

      myCommand.ExecuteNonQuery(); 
      myConnection.Close(); 
} 

In der teams Tabelle der Primärschlüssel ist team_id Ich möchte den Wert dieser ziehen zu können und legen Sie sie in das team_id Feld in der Lookup-Tabelle I sprints_vs_teams haben. Gibt es eine Methode, dies zu tun, wenn ja, könntest du mir vielleicht eine Anleitung geben, bitte sei dir bewusst, dass ich C# sehr neu bin. Jede Hilfe würde sehr geschätzt werden.

Geänderte Code

protected void add_button_Click(object sender, EventArgs e) 
{ 
    String user = Session["user_id"].ToString(); 
    string teamname = team_name_tb.Text; 
    string teamstatus = "Not Started"; 
    string teamnotes = team_notes_tb.Text; 
    string sprintid = sprint_select.SelectedValue; 

string ConnectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
SqlConnection myConnection = new SqlConnection(ConnectionString); 

myConnection.Open(); 

String query = "Declare @team_identity int INSERT INTO teams (team_name, status, notes) VALUES (@team_name, @status, @notes); set @team_identity = scope_identity() INSERT INTO sprints_vs_teams (sprint_id, team_id) VALUES (@sprint_id, @team_identity)"; 

     SqlCommand myCommand = new SqlCommand(query, myConnection); 
     myCommand.Parameters.AddWithValue("@team_name", teamname); 
     myCommand.Parameters.AddWithValue("@status", teamstatus); 
     myCommand.Parameters.AddWithValue("@notes", teamnotes); 
     myCommand.Parameters.AddWithValue("@sprint_id", sprintid); 

     myCommand.ExecuteNonQuery(); 
     myConnection.Close(); 
} 

geändert ich meinen Code mit @Sick ‚s Antwort, aber es ist nicht zu funktionieren schien. Wenn jemand Ratschläge geben könnte, wo ich vielleicht schief gelaufen bin, würde ich es sehr schätzen.

+0

Bitte näher auf die „es scheint nicht zu funktionieren“. Ein Fehler? Keine Daten eingefügt? Falsche Daten eingefügt? – AakashM

Antwort

4

Verwenden SCOPE_IDENTITY

Declare @team_identity int 

INSERT INTO teams (team_name, status, notes) 
          VALUES (@team_name, @status, @notes); 

set @team_identity = scope_identity() 

INSERT INTO sprints_vs_teams (sprint_id, team_id)      
          VALUES (@sprint_id, @team_identity)" 
+0

Vielen Dank für Ihre Antwort, ich habe dies zu meinem Code hinzugefügt, obwohl es leider nicht zu funktionieren scheint. Ich habe meinen geänderten Code zu meiner Frage hinzugefügt. Könnten Sie mir vielleicht mitteilen, wo ich möglicherweise schief gelaufen bin? – mcclosa

+0

@mcclosa - Bitte verpacken Sie diese SQL-Anweisungen in einen SP und führen Sie sie aus. –

+0

@RahulSingh Sorry, wie ich in meiner Frage erwähnt habe, bin ich sehr neu in C# und Programmierung im Allgemeinen, so dass ich nicht sicher bin, wie das geht. Könnten Sie mir eine Anleitung geben? – mcclosa

0

Wenn ich mich nicht täusche, haben Sie team_identity als cmd.parameter zu erklären. natürlich gibt es keine param hinein C# übergeben wird noch ein

cmd.paramater.addwithvalue("@team_identity", paramaterDirection.out); 

oder so ähnlich

0

nach einer Zeile in teams Tabelle einfügen erwarten, schreiben Sie den folgenden Code den aktuellen Wert der Identität zu erhalten und die Verwenden Sie es beim Einfügen in sprints_vs_teams Tabelle.

SqlCommand cmd=new SqlCommand("select Ident_current('teams')",Cn); 
Cn.Open(); 
int teamid=int.Parse(Cmd.ExecuteScalar().ToString()); 

Hoffe, es hilft

Verwandte Themen