2011-01-25 90 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);仍然不工作... –