You need to call
dbSync() after doing anything that will change the frame buffer (such as creating the new sprite in this instance).
The dbSync function basically performs all operations associated with rendering (the current camera view) and does not simply swap pixel buffers, something that might be worth to note.
The standard program layout continuously calls dbSync() in a loop (the "game loop", which runs until your game / program finishes). There can of course be situations where it is desirable to handle this in other ways, but that should be the general approach that is what you want to do most of the time. Also I don't think the window is redrawn with the last rendered image so even though it might seem that you could just slap in a dbSync() call right before dbWaitMouse() in your code there that might not necessarily provide a constant view of the sprite until the program finishes.
"Why do programmers get Halloween and Christmas mixed up?" Because Oct(31) = Dec(25)