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 ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access