使用 SqlDataReader 时出现 "Incorrect syntax near"-错误

Getting "Incorrect syntax near"-error with SqlDataReader

我遇到了错误,我不知道代码有什么问题,所以如果有人能帮助我,我将不胜感激。

错误:

Incorrect syntax near ','.

并且突出显示的行是

rdr = cmd.ExecuteReader();

代码:

cn.Open();
string query = "SELECT * FROM dbo.ispiti WHERE poID=@poID, sgID=@sgID, npID=@npID";

SqlCommand cmd = new SqlCommand(query, cn);

cmd.Parameters.AddWithValue("@poID", pr);
cmd.Parameters.AddWithValue("@sgID", pr1);
cmd.Parameters.AddWithValue("@npID", pr2);

SqlDataReader rdr;

try
{
    rdr = cmd.ExecuteReader();

    if (rdr.Read())
    {
        MessageBox.Show("Well done!");
    }
}
catch(exception ex)
{
    MessageBox.Show("Error!");
}
finally
{
    cn.Close();
}

您的 SQL 语句有误。你应该改变

string query = "SELECT * FROM dbo.ispiti WHERE poID=@poID, sgID=@sgID, npID=@npID";

string query = "SELECT * FROM dbo.ispiti WHERE poID=@poID AND sgID=@sgID AND npID=@npID";

您不能在 WHERE clause 中使用逗号。您需要使用像 ANDOR 这样的逻辑运算;

WHERE poID=@poID AND sgID=@sgID AND npID=@npID

此子句后接 search condition,没有逗号语法。

顺便说一下,使用 using statement 自动处理您的连接、命令和阅读器,而不是手动调用 DisposeClose 方法。

也不要使用AddWithValue方法。 It may generate unexpected results sometimes。使用 Add 方法重载来指定您的参数类型及其大小。