Chris' reply is correct in that
you should print out the query as it is being executing, and try executing it directly against the database to verify it.
However the query, "Select * from <tablename> where 1=0" is a perfectly valid query in most databases (I've used it against Oracle, Sybase and MySql) and is a great way to get the table's column definition. It executes very fast and returns no rows, but you still get the MetaData so you can pull out the number of columns, and column names and types.
The error message seems to indicate it doesn't like the table name. However
test the SQL directly against your SQL-Server database to make sure that it supports the query.
Finally, and this is a minor issue, but you should probably close your resultset explicitly. Some database don't care, but with some databases you need to close both the resultset and statement. And that should be done in a "finally" clause to ensure they get closed even if an exception gets thrown.