The manual says that the ExecuteScalar method should be used as:
public T ExecuteScalar<T>( string commandText, CommandType commandType, params DbParameter[] parameters )
But how do I create this array of parameters? I need to provide the parameters of my stored procedure.
Although you can simply pass a variable number of parameters without creating an array, if you dynamically create a variable number of parameters, the array is your friend.
var parameters = new[]{ new SqlParameter(){ ParameterName="foo", Value="hello" }, new SqlParameter(){ ParameterName="bar", Value="World" } }; x.ExecuteScalar<int>(commandText, commandType, parameters);
parameters params. , , :
parameters
params
x.ExecuteScalar(commandText, commandType, parameter1, parameter2);
, , :
DbParameter[] parameters = new DbParameter[] { parameter1, parameter2 }; x.ExecuteScalar(commandText, commandType, parameters);
DbParameter - , .
Sql-, SqlParameter:
DbParameter[] parameters = new DbParameter[2]; parameters[0] = new SqlParameter("param1", 123456); parameters[1] = new SqlParameter("param2", "abcdef");
params , ( 1 [] ).
: ExecuteScalar<SomeType>("Command!", CommandType.SomeCommandType, dbParameter1, dbParameter2);
ExecuteScalar<SomeType>("Command!", CommandType.SomeCommandType, dbParameter1, dbParameter2);
" " :
DbProviderFactory f = DbProviderFactories.GetFactory("System.Data.SqlClient"); DbParameter parameter = f.CreateParameter();
but you probably should use some specific platform functionality that SqlParameter implements ... like SqlCommand does: SqlCommand.Parameters.AddWithValue (), etc.