正确的方法是使用JDBC MetaData
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
DatabaseMetaData metadata = connection.getMetaData();
ResultSet resultSet;
resultSet = metadata.getTables(null, null, "tablename", null);
if(resultSet.next())
// Table exists
resultSet = metadata.getColumns(null, null, "tablename", "columnName");
if(resultSet.next())
// Column exists
要调试代码,最好先尝试获取所有表名,然后将其打印出来,如下所示:
resultSet = metadata.getTables(null, null, "%", null);
while(resultSet.next())
System.out.println(resultSet.getString("TABLE_NAME"));
NB!如果没有列出表,则使用旧版本的MySQL JDBC驱动程序,并出现以下错误http://bugs.mysql.com/bug.php?id=20913,您应该升级或使用数据库名作为getTables的第一个参数