I would suggest you run through the code line by line using breakpoints and the de-bugger and see exactly where the code is failing. If it is only coming out of the catch block, then it's a database issue. Anywhere else, and it's a code issue.

As for the SQL... what happens when you run the same code outside of VB? Does the same query run okay in the database you're using?