2011-01-25 46 views
2

参数未添加到sql字符串中,我做错了什么?使用C语言中的预处理语句时出错#

SqlCommand comando = conexao.CreateCommand(); 
comando.CommandTimeout = 7200; 
foreach (SqlParameter parametro in parametros) 
{ 
    comando.Parameters.Add(new SqlParameter(parametro.ParameterName, parametro.Value)); 
} 

comando.CommandText = cmdSql; 
comando.CommandType = CommandType.Text; 
DataTable dt = new DataTable(); 
SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = comando; 

try 
{ 
    adapter.Fill(dt); 
} 
catch (Exception ex) { Console.Write(ex.Message); } 
conexao.Close(); 

return dt; 

SQL字符串,与谁打电话上述方法的方法。

string cmdSql = "select top @quantidade * from representante"; 
SqlParameterCollection sqlParameters = new SqlCommand().Parameters; 
sqlParameters.AddWithValue("@quantidade", SqlDbType.Int).Value = quantidade; 

return Persistencia.Persistencia.ConsultaComando(cmdSql, sqlParameters); 
+0

他们不应该被*添加到sql字符串中。 –

+0

我假设他的意思是代入命令 – Rup

+1

你错误地使用了AddWithValue方法。尝试sqlParameters.AddWithValue(“@ quantidade”,q​​uantidade) –

回答

3

感谢所有帮助,但解决的办法是使用string cmdSql = "select top (@quantidade) * from representante";得到的回答在MSDN: Answer in MSDN BRASIL

1

分配CommandText添加参数之前并显示cmdSql内容。

+0

仍然无法正常工作... –

+0

给我们例外或错误 –

+0

'@quantidade'附近的语法不正确。 –

0

AddWithValue方法上,您试图传递一个枚举作为参数值。

替换此:

sqlParameters.AddWithValue("@quantidade", SqlDbType.Int).Value = quantidade; 

有了这个:

sqlParameters.AddWithValue("@quantidade", quantidade); 
+0

我使用这个,和sqlParameters.Add(“@ quantidade”,q​​uantidade);仍然不工作... –