2015-11-04 24 views
5

Ben birincil anahtar bu değerini çekin ve ben sprints_vs_teams sahip arama tablosundaki team_id alanına eklemek için mümkün istiyorum team_id olduğunu teams tabloda aşağıdaki C#Aynı değeri başka bir tabloya eklemek için SQL insert sorgusundan yeni kayıt birincil anahtar kimliğini alın.

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

var. Bunu yapmak için bir yöntem var mı, eğer muhtemelen bir rehberlik sağlayabilirseniz, lütfen C# için çok yeni olduğumu unutmayın. Herhangi bir yardım büyük takdir edilecektir.

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

Değişik kod Ben ancak o iş değildi, @Sick 'ın cevapla kodumu değiştirilmiştir. Nerede yanlış yaptığım konusunda tavsiyede bulunabilirse, bu çok takdir edilecektir. Yanılmıyorsam Eğer

+0

"o iş değildi" üzerinde durmak lütfen yardımcı olur. Bir hata? Veri eklenmedi mi? Yanlış veriler eklendi? – AakashM

cevap

4

Kullanım 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

Cevabınız için teşekkür ederim, ne yazık ki işe yaramadı, ancak bunu koduma ekledim. Değiştirilen kodumu sorguma ekledim, muhtemelen nereye yanlış gittiğimi bildirebilir misiniz? – mcclosa

+0

@mcclosa - Lütfen bu SQL ifadelerini SP'ye sarın ve yürütün. –

+0

@RahulSingh Üzgünüm, bu soruda da belirttiğim gibi, C# 'da çok yeni ve programlamayı genel olarak yapıyorum, bu yüzden nasıl yapacağımı bilmiyorum. Bana rehberlik edebilir misiniz? – mcclosa

0

, bir cmd.parameter olarak team_identity beyan etmek zorunda. Tabii hala teams tabloya satırı eklendikten sonra bu

0

gibi bir

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

Ya bir şey bekliyor C# içine geçirilen hiçbir param yok, kimlik ve geçerli değerini almak için aşağıdaki kodu yazmak sprints_vs_teams tablosuna eklerken kullanın.

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

o

İlgili konular