使用SqlDataReader获取"" -error附近的语法错误

时间:2015-06-17 14:17:28

标签: c# syntax-error sqldatareader

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

错误:

  

','附近的语法不正确。

,突出显示的行是

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();
}

2 个答案:

答案 0 :(得分:7)

您的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";

答案 1 :(得分:2)

您无法在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方法重载来指定参数类型及其大小。