SqlConnection cnn = new SqlConnection(Properties.Settings.Default.cnnString);
cnn.Open();
cmd = new SqlCommand(@"INSERT INTO Participant (ParticipantId, LastName, FirstName, Country, Rank, Gender, IACMember)
VALUES (@ParticipantId, @LastName, @FirstName, @Country, @Rank, @Gender, @IACMember)", cnn);
// cmd.Parameters.AddWithValue("@ParticipantId", notnull);
cmd.Parameters.AddWithValue("@LastName", txtLastName.Text.ToString());
cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
cmd.Parameters.AddWithValue("@Country", cbHomeCountry.SelectedItem.ToString());
cmd.Parameters.AddWithValue("@Rank", txtRank.Text);
cmd.Parameters.AddWithValue("@Gender", txtGender.Text);
cmd.Parameters.AddWithValue("@IACMember", chkMember.Checked);
cmd.ExecuteNonQuery();
cnn.Close();
我不断收到错误消息:
“System.Data.SqlClient.SqlException:'必须声明标量变量”@ParticipantId“。' “
我尝试了多种方式,并且一直试图解决这个问题一周。我不明白我的代码中的错误是什么。
以下更新版本:
SqlConnection cnn = new SqlConnection(Properties.Settings.Default.cnnString);
cnn.Open();
cmd = new SqlCommand(@"INSERT INTO Participant (LastName, FirstName, Country, Rank, Gender, IACMember)
VALUES (@LastName, @FirstName, @Country, @Rank, @Gender, @IACMember)", cnn);
//cmd.Parameters.AddWithValue("@ParticipantId", );
cmd.Parameters.AddWithValue("@LastName", txtLastName.Text.ToString());
cmd.Parameters.AddWithValue("@FirstName", txtFirstName.Text);
cmd.Parameters.AddWithValue("@Country", cbHomeCountry.SelectedItem.ToString());
cmd.Parameters.AddWithValue("@Rank", txtRank.Text);
cmd.Parameters.AddWithValue("@Gender", txtGender);
cmd.Parameters.AddWithValue("@IACMember", chkMember.Checked);
int nextKey;
cmd = new SqlCommand("SELECT MAX(ParticipantId) FROM Participant", cnn);
nextKey = (int)cmd.ExecuteScalar() + 1;
// cmd.ExecuteNonQuery();
cnn.Close();
答案 0 :(得分:1)
如果列ParticipantId被标记为Identity然后您不应该尝试手动在其中插入数据,sql server将根据上次使用的ParticipantId填充它,因此您应该从insert语句中删除该列并删除id参数。
如果它只是一个主键,那么你需要为每一行手动插入唯一值。
上面提到的错误是因为注释行应该为ParticipantId参数提供一个值