我有这段代码:
string conStr = ConfigurationManager.ConnectionStrings["BackgammonGame"].ConnectionString;
SqlConnection con = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
con.Open();
cmd.CommandText = ("INSERT INTO Game (playerA, playerB) OUTPUT INSERTED.gameID VALUES (@playerA, @playerB)");
cmd.Parameters.Add("@playerA", SqlDbType.NVarChar).Value = firstPlayer;
cmd.Parameters.Add("@playerB", SqlDbType.NVarChar).Value = secondPlayer;
cmd.ExecuteNonQuery();
int id = (int)cmd.ExecuteScalar();
con.Close();
当我插入这个表时,我有一个名为
gameID
的自动递增整数主键列,并在SQL语句中声明我想要输出gameID
。我的问题是,在代码中写下这行: int id = (int)cmd.ExecuteScalar();
插入的参数出现了两次(有相同信息的2行),但当我删除它时就没事了。我需要这一行,以便我可以在其他表中使用此ID。
Convert.ToInt32(cmd.ExecuteScalar())
- Nithesh Narayanancmd.ExecuteNonQuery()
,只使用cmd.ExecuteScalar()
即可。你同时调用这两个方法,所以才会出现重复插入的问题。 - Nithesh Narayanan