Skip to main content
All docs
V26.1
  • .NET Framework 4.6.2+

    Session.ExecuteScalarAsync(String, String[], Object[], CancellationToken) Method

    SECURITY-RELATED CONSIDERATIONS

    This method executes a raw stored procedure. Always validate, sanitize, or parameterize externally supplied names and values to prevent unauthorized access to sensitive information.

    Asynchronously executes the specified SQL query and returns the first column of the first row in the result set returned by the query.

    Namespace: DevExpress.Xpo

    Assembly: DevExpress.Xpo.v26.1.dll

    Declaration

    public Task<object> ExecuteScalarAsync(
        string sql,
        string[] parameterNames,
        object[] parameterValues,
        CancellationToken cancellationToken = default(CancellationToken)
    )

    Parameters

    Name Type Description
    sql String

    Specifies an SQL statement.

    parameterNames String[]

    Specifies parameter names.

    parameterValues Object[]

    An array of objects specifying parameters to pass to the database server along with the query.

    Optional Parameters

    Name Type Default Description
    cancellationToken CancellationToken null

    A CancellationToken object that delivers a cancellation notice to the running operation.

    Returns

    Type Description
    Task<Object>

    A Task<TResult> that returns the first column of the first row in the query’s result set. A null reference (Nothing in Visual Basic) if the result set does not contain columns. DBNull.Value if the first column does not contain a value.

    Remarks

    Use ExecuteScalarAsync to asynchronously query data stores for a single or aggregate value, without having to retrieve a result set.

    using System.Threading;
    using System.Threading.Tasks;
    using DevExpress.Xpo;
    using DevExpress.Xpo.DB;
    // ...
    CancellationTokenSource cts = new CancellationTokenSource();
    int ordersCount = await GetEmployeeOrdersCountAsync(cts.Token, 152);
    // ...
    public async Task<int> GetEmployeeOrdersCountAsync(CancellationToken cancellationToken, 
    int employeeId) {
        const string queryString = 
            "SELECT COUNT(*) FROM [Northwind].[dbo].[Orders] WHERE [EmployeeID] = @p1";
        object result = await session.ExecuteScalarAsync(
            queryString, 
            new string[] { "p1" }, 
            new object[] { employeeId },
            cancellationToken
        );
        return (int)result;
    }
    

    Note that a format of parameter names in a SQL statement depends on the ADO.NET provider and database you use.

    To learn more about executing SQL queries in XPO, refer to Direct SQL Queries.

    Note

    The ExecuteScalarAsync method sends queries directly, so the correct query syntax depends on a particular database server.

    See Also