[英]Error while executing query in C#, SQL Server: trying to update if value already present else insert
[英]C# if available in SQL Update else insert
我已經檢查了 Stackoverflow 上的許多帖子,但我仍然堅持下面的查詢。 我是學習 C# 的初學者,會請求幫助。
錯誤:關鍵字 ELSE 附近的語法不正確
我正在嘗試檢查是否選擇了 Question1 或 Question2 中的任何一個,則應執行以下操作。 還有其他時候它給了我一個錯誤@answer2 未定義。
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);";
這里的主要問題是IF
之后的UPDATE
語句沒有用BEGIN
和END
括起來。 不使用那些只適用於單個批處理語句,而不是多個。 所以你的陳述應該是這樣的:
IF EXISTS(..)
BEGIN
UPDATE 1
UPDATE 2
END
ELSE
yadayada
看來您的 Insert 語句看起來很可疑。
INSERT INTO dbo.tbl_pkt_Answers_Submitted(Questions, AnswersSubmitted)
VALUES(@Question1, @Answer1)";
此外,它沒有被開始和結束語句包圍。 它應該是
If exists ...
begin
...
end
else
insert
您的 if 條件為真中有多個語句。 如果只有一個語句就可以了,但是如果有多個語句,則需要使用BEGIN...END
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.