10.2. Executing a SQL Statement Asynchronously

Problem

You need to execute a SQL statement asynchronously.

Solution

Use the BeginExecuteNonQuery() method of the Command class. Two solutions are shown: one using a callback at query completion and the other using a timer to poll for completion.

The first solution uses the BeginExecuteNonQuery() method of the Command class to execute a command that asynchronously executes a T-SQL WAITFOR statement that instructs SQL Server to wait for five seconds and callback to the method HandleCallback() when the command completes. At the end of the five seconds, the callback method completes the execution of the T-SQL statement.

In the callback, the Command object is retrieved by casting the object returned by the AsyncState property of the IAsyncResult argument passed into the callback. The EndExecuteNonQuery() method of this Command object is called to finish the asynchronous execution of the command. The EndExecuteNonQuery() method returns either the number of rows affected for INSERT, UPDATE, and DELETE statements or –1 for all other types of statements—the same behavior as the ExecuteNonQuery() method.

The C# code in Program.cs in the project ExecuteAsyncSqlStatementCallback is shown in Example 10-2.

Example 10-2. File: Program.cs for ExecuteAsyncSqlStatementCallback solution

using System; using System.Data.SqlClient; namespace ExecuteAsyncSqlStatementCallback { class Program { static void Main(string[] args) { string sqlConnectString = "Data Source=localhost;Integrated ...

Get ADO.NET 3.5 Cookbook, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.