我需要验证参数RGP, PEIXE, DATA_REGISTRO
,我的方法返回true。但是在PEIXE参数上,这给出了错误:
预计'PEIXE'参数,未提供。
PEIXE是SQL上的Varchar类型,RGP是Int类型,DATA_REGISTRO是Date类型。
public bool Search_RGP_Cadastro(int param_RGP, string param_date, string param_peixe)
{
SqlDataReader objReader;
SqlCommand objcmd = null;
vsql = "SELECT [RGP], [PEIXE], [PESO], [QUANTIDADE], [DATA_REGISTRO] FROM cadastro WHERE RGP = @RGP and PEIXE = @PEIXE and DATA_REGISTRO = @DATA_REGISTRO";
if (this.Conectar())
{
try
{
DateTime dtParam = DateTime.Parse(param_date);
objcmd = new SqlCommand(vsql, objCon);
objcmd.Parameters.Add(new SqlParameter("@RGP", param_RGP));
objcmd.Parameters.Add(new SqlParameter("@PEIXE", param_peixe));
objcmd.Parameters.Add(new SqlParameter("@DATA_REGISTRO", dtParam));
objReader = objcmd.ExecuteReader();
if (objReader.Read())
{
valor.retorna_RGP = objReader.GetInt32(0);
valor.retorna_nome_peixe = objReader.GetString(1);
valor.retorna_peso = objReader.GetDouble(2);
valor.retorna_Quantidade = objReader.GetInt32(3);
valor.retorna_date_time = objReader.GetDateTime(4);
}
return true;
}
catch
{
throw;
}
finally
{
this.Desconectar();
}
}
else
return false;
}
答案 0 :(得分:1)
我将你的param_peixe包装在单引号中,如下所示:
objcmd.Parameters.Add(new SqlParameter("@PEIXE", "'" + param_peixe + "'"));
这不是我第一次看到SQL拒绝使用字符串作为VARCHAR。