我已经检查了 Stackoverflow 上的许多帖子,但我仍然坚持下面的查询。我是学习 C# 的初学者,希望得到帮助。
Error: Incorrect Syntax near keyword ELSE
我正在尝试检查是否应该执行下面的问题 1 或问题 2(如果选择了其中一个)。还有一次它给了我一个错误 @answer2 not defined。
string query = @"IF EXISTS(SELECT * FROM dbo.tbl_pkt_Answers_Submitted WHERE (Questions = @Question1 or Questions = @Question2))
UPDATE dbo.tbl_pkt_Answers_Submitted
SET AnswersSubmitted = @Answer1
WHERE Questions = @Question1;
UPDATE dbo.tbl_pkt_Answers_Submitted
SET AnswersSubmitted = @Answer2
WHERE Questions = @Question2;
ELSE
INSERT INTO dbo.tbl_pkt_Answers_Submitted(Questions, AnswersSubmitted)
VALUES (@Question1, @Answer1), (@Question2, @Answer2);";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.Add("@Question1", lblQuestion1.Text);
cmd.Parameters.Add("@Question2", lblQuestion2.Text);
if (rdq1a1.Checked)
{
cmd.Parameters.Add("@Answer1", rdq1a1.Text);
}
if (rdq1a2.Checked)
{
cmd.Parameters.Add("@Answer1", rdq1a2.Text);
}
if (rdq1a3.Checked)
{
cmd.Parameters.Add("@Answer1", rdq1a3.Text);
}
if (rdq1a4.Checked)
{
cmd.Parameters.Add("@Answer1", rdq1a4.Text);
}
if (rdq2a1.Checked)
{
cmd.Parameters.Add("@Answer2", rdq2a1.Text);
}
if (rdq2a2.Checked)
{
cmd.Parameters.Add("@Answer2", rdq2a2.Text);
}
if (rdq2a3.Checked)
{
cmd.Parameters.Add("@Answer2", rdq2a3.Text);
}
if (rdq2a4.Checked)
{
cmd.Parameters.Add("@Answer2", rdq2a4.Text);
}
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("Your Data has been saved");
con.Close();
最佳答案
IF 语句的 'true' 部分包含多个 SQL 语句,您必须将这些语句括在 BEGIN 和 END 中
string query = @"IF EXISTS(SELECT * FROM dbo.tbl_pkt_Answers_Submitted WHERE (Questions = @Question1 or Questions = @Question2))
BEGIN
UPDATE dbo.tbl_pkt_Answers_Submitted
SET AnswersSubmitted = @Answer1
WHERE Questions = @Question1;
UPDATE dbo.tbl_pkt_Answers_Submitted
SET AnswersSubmitted = @Answer2
WHERE Questions = @Question2;
END
ELSE
INSERT INTO dbo.tbl_pkt_Answers_Submitted(Questions, AnswersSubmitted)
VALUES(@Question1, @Answer1), (@Question2, @Answer2);";
关于C# 如果在 SQL 更新中可用,否则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59542991/