2011-01-25 2 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; 

СКП String, с помощью метода, который называют метод выше.

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", quantidade) –

ответ

3

Спасибо за все помогают, но решение использовать string cmdSql = "select top (@quantidade) * from representante"; ответил в MSDN: Answer in MSDN BRASIL

1

Присвоить CommandText перед добавлением параметров и показать cmdSql содержание.

+0

все еще не работает ... –

+0

Дайте нам исключение или что не так –

+0

Неправильный синтаксис рядом с '@quantidade'. –

0

В методе AddWithValue вы пытаетесь передать enum в качестве значения параметра.

Заменить это:

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

С этим:

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

Я использую это, и sqlParameters.Add ("@ quantidade", quantidade); и все еще не работает ... –

Смежные вопросы