Well, it helps to exclude this:
Like psy suggested, if the wallet.dat is the only db left and you still get the error, then the wallet.dat is probably in a bad state.
So to know for sure, move it aside (e.g., rename it to wallet.dat.tmp or something) and let the client re-download the blockchain and create the empty wallet.
But that doesn't solve your problem if the wallet.dat is in a bad state. Did you have a recent backup of it?