Рассматривали ли вы изменение указателя мыши на песочные часы, поскольку это было бы чрезвычайно просто реализовать:
Me.Cursor = Cursors.WaitCursor
...Do your DB calls here...
Me.Cursor = Cursors.Default
Тем не менее, я бы согласился, что отображение «вращающегося колеса», вероятно, немного более удобно для пользователя и определенно намного более очевидно. Итак, сначала получите анимированный GIF, который соответствует вашим потребностям. Затем создайте форму с графическим блоком, содержащим изображение.
Если у вас есть возможность показать форму пользователю и в фоновом режиме выполнить работу с БД, после завершения закройте форму.
Другая альтернатива - вместо этого использовать скользящий индикатор прогресса, поэтому, когда он достигает 100%, он снова вращается и продолжает работать, пока вы его не закроете.
EDIT:
Одна вещь, которую я забыл упомянуть, это то, что вам придется обрабатывать условия исключения. Допустим, вы установили курсор на ожидание, тогда происходит ошибка. Исключение может обойти код, который сбрасывает все. Это оставляет пользователя с измененным курсором и без средств его изменения.
Когда я делал подобные вещи, я обычно создавал одноразовый класс WaitCursor, а затем использовал что-то вроде этого:
Using myWaitCursor As WaitCursor = New WaitCursor
...do something...
End Using
В классе Dispose of WaitCursor вы устанавливаете курсор на значение по умолчанию. То же самое применимо, если вы пошли по пути использования формы с изображением или индикатором выполнения.