0
[HttpPost]
public void InsertOrUpdateDirector(Director director)
{
    int idReturned = 0;

    string query = null;
    myConnection.Open();
    if (director.Operation == 'I')
    {
      query = "INSERT...";
    }
    else if (director.Operation == 'U')
    {
      query = "UPDATE ...";
    }
    var cmd = new SqlCommand(query, myConnection);
    cmd.ExecuteNonQuery();
    myConnection.Close();

    idReturned = "???";

    return idReturned;
}

insert ステートメントの後に、新しく作成された ID を返そうとしているだけです。どうすればいいですか?

4

2 に答える 2

6

挿入の後にクエリに追加しますSELECT SCOPE_IDENTITY()。そして電話する

idReturned = cmd.ExecuteScalar();

それ以外のcmd.ExecuteNonQuery()

次に、idReturned が null かどうかを確認します。cmd.ExecuteScalar() は更新クエリに対して null を返します。主キーは Director オブジェクトのパーティである必要があるため、次のことができます。

if(idReturned == null){
    return director.DirectorId //just guessing at name of id property here for example sake
}else{
    return idReturned;
}

更新クエリを作成するには、主キーが InsertOrUpdateDirector に渡されている必要があります。

于 2013-09-11T23:16:59.500 に答える
0
 Try this code,I hope this will work
myConnection.Open();
    if (director.Operation == 'I')
        {
          query = "INSERT...";
    string query1="select  createdId  from table";

        }
    var cmd = new SqlCommand(query, myConnection);
    Sqlcommand cmd1=new SqlCommand(query1,myConnection);
        cmd.ExecuteNonQuery();
    int CreatedId=cmd1.ExecuteScalar();
    return  CreatedId;
        myConnection.Close();
     myConnection.Close();
于 2013-09-12T05:23:26.357 に答える