How to create an array of DbParameter []

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.

+5
source share
5 answers
  • DbParameter is an abstract class.
  • Since type T cannot be taken out of use, you must specify it.
  • 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);
    
+8
source

parameters params. , , :

x.ExecuteScalar(commandText, commandType, parameter1, parameter2);

, , :

DbParameter[] parameters = new DbParameter[] { parameter1, parameter2 };

x.ExecuteScalar(commandText, commandType, parameters);
+4

DbParameter - , .

Sql-, SqlParameter:

 DbParameter[] parameters = new DbParameter[2]; 
 parameters[0]  = new SqlParameter("param1",  123456);
 parameters[1]  = new SqlParameter("param2",  "abcdef");
+2

params , ( 1 [] ).

: ExecuteScalar<SomeType>("Command!", CommandType.SomeCommandType, dbParameter1, dbParameter2);

+1

" " :

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.

0
source

All Articles