DatabaseMetaData.getColumns()给出了SQL Server 2008的错误

时间:2011-10-19 15:28:50

标签: java sql-server-2005 sql-server-2008

我们有一个很长时间的数据库代码,它已成功运行Progress DB。最近,我们尝试使用带有JDBC 4驱动程序的SQL Server 2008.它给出了以下异常:

数据库'%'不存在。确保正确输入名称。

DatabaseMetaData conMD = connection.getMetaData();
ResultSet columns = conMD.getColumns("%", "%", m_Table, "%");

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:0)

如果您之前获得了目录列表?

使用方法 getCatalogs()

http://download.oracle.com/javase/1.4.2/docs/api/java/sql/DatabaseMetaData.html#getCatalogs()

答案 1 :(得分:0)

如错误消息所示:您无法为数据库(目录)参数传递通配符。通配符仅允许用于架构,表和列名称。

请改用null。

conMD.getColumns(null, "%", m_Table, "%");

答案 2 :(得分:0)

conMD.getColumns(connnection.getCatalog(), "%", m_Table, "%");

而不是给%,connnection.getCatalog()将解决问题。有趣的是代码适用于Oracle,MySql和Progress。只有Sql Server抛出错误。