2011-01-25 10 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"、quantidade)を試してください。 –

答えて

3

おかげが、溶液は、MSDNに答えたstring cmdSql = "select top (@quantidade) * from representante";を使用している:

これを交換し 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"、quantidade);まだ働いていない... –

関連する問題