2015-11-04 16 views
5

私は主キーがteam_idあるteams表では、次のC#SQL挿入クエリから新しいレコードの主キーIDを取得して、同じ値を別のテーブルに挿入しますか?

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

を持っている私はsprints_vs_teamsを持って、この値を引いて、ルックアップテーブルにteam_idフィールドに挿入できるようにしたいです。これを行う方法はありますか?私にはある程度のガイダンスを提供することができますか?私はC#の新機能を知っておいてください。どんな助けでも大歓迎です。

改正コード

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

しかし私は動作するようには思えませんでした、@Sickの答えに私のコードを修正しました。誰かが私が間違っていたかもしれない場所についてアドバイスできれば、それは大変に感謝しています。

+0

「は、動作していないようでした」について詳しく説明してくださいお役に立てば幸いです。エラー?データは挿入されませんか?誤ったデータが挿入されましたか? – AakashM

答えて

4

使用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

あなたの答えをありがとう、私は残念ながらそれは動作していないようだが、私は自分のコードにこれを追加しました。自分の修正したコードを自分の質問に追加しました。どこに間違っていたかもしれないのかアドバイスできますか? – mcclosa

+0

@mcclosa - これらのSQL文をSPにラップして実行してください。 –

+0

@RahulSingh申し訳ありませんが、私は私の質問で言及したように、私はC#とプログラミング全般に新しかったので、これをどうやって行うのかは分かりません。私はいくつかの指導を私に提供できますか? – mcclosa

0

私は間違っていないよ場合は、cmd.parameterとしてteam_identityを宣言しなければなりません。もちろん、まだteamsテーブルに行を挿入した後、その

0

のような1

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

か何かを期待して#cは、それに渡さ全くparamはありません、アイデンティティとの現在の値を取得するには、次のコードを記述挿入中にsprints_vs_teamsテーブルに使用してください。

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

は、それが

関連する問題