the code snips do not write to any temporary storage before encryption unless you mean the memory stream when you say temporary storage.
Oops, you're right.
This method has average security in the sense that a memory dump of the program will reveal the unencrypted data no need to go fish for keys in the exe which is an other attack vector.
Agreed. As you say, it's a different attack vector but if you have the program running, it's not the easiest (therefore most important/likely)

what would you suggest one should do in such conditions do you know any database that correctly supports encryption and even if the database file is stolen can't be opened with out your program?
In this case must be embedded also.
I think that's the fundamental problem: whenever your data leaves a physically trusted environment with good logical access security, you cannot completely secure the data.
Depending on the importance of the data and the measures you have taken (e.g. encryption), the residual risk may be almost theoretical.
If needed, things like hardware tokens (RSA keys etc) that you use for getting passwords for decryption can be used, etc.
So, there is nothing totally secure, but depending on your security analysis, encrypting the data/database may well be a very good step to increase security.
Edit: clarification