using (var connection = new SqlConnection(connectionString))
{
    await connection.OpenAsync();

    var command1 = new SqlCommand("SELECT * FROM [People]", connection);
    using (var dataReader = await command1.ExecuteReaderAsync())
    {
				if (dataReader.HasRows)
        {
					while (await dataReader.ReadAsync())
	        {
							// Evaluate fields in the current row...
	            if (dataReader["TargetField"] == null)
	                Console.WriteLine(dataReader["TargetField"]);
							var field1 = dataReader.GetInt32(0);
							var field2 = dataReader.GetInt32(1);
	        }
				}
    }

    var command2 = new SqlCommand("UPDATE [People] SET FirstName='John'", connection);
    var numberOfUpdatedRows1 = await command2.ExecuteNonQueryAsync();

    var command3 = new SqlCommand("INSERT INTO [People] ([FirstName], [LastName]) VALUES (@firstName, @lastName)", connection);

    command3.Parameters.AddWithValue("@firstName", "John");
    command3.Parameters.AddWithValue("@lastName", "Doe");
    var numberOfUpdatedRows2 = await command3.ExecuteNonQueryAsync();
}

Retrieving Identity or Autonumber Values

Retrieving Binary Data

Use GetSchemaTable To Get Schema Information

using (var dataReader = await command.ExecuteReaderAsync())
{
	DataTable schemaTable = dataReader.GetSchemaTable();
	foreach (DataRow row in schemaTable.Rows)
		foreach (DataColumn column in schemaTable.Columns)
			Console.WriteLine(String.Format("{0} = {1}", column.ColumnName, row[column]));
}

Transactions