尝试使用JDBC测试MySQL数据库中是否存在特定表时出错



我想检查一个名为basestation的表是否存在于使用JDBC的Java程序的MySQL表中。我的代码是:

conn = DriverManager.getConnection(url, username, password);
DatabaseMetaData dbm = conn.getMetaData();
tables = dbm.getTables(null, null, "basestations", null);
if (tables.next())
{   
     //Table exists in database
     //...
}
else
{
     //Table does not exist
     //...
}

但是,尽管表basestations存在于我的数据库中,但我的代码似乎从未进入第一个子句,并且总是决定该表不存在,这在尝试从一开始创建表时自然会导致table already exists in databaseSQL错误。

下面不是最好的方法。。但您可以执行以下操作:

使用JDBC发送以下语句:

select count(*) from information_schema.tables where information_schema.table_schema='your_schema' and information_schema.table_name='basestations';

分析jdbc结果集。

它应该返回1或0。如果结果计数为1,则表存在,否则不存在。

我怀疑您的getTables()在这里没有返回任何内容。根据getTables文档,只返回与目录、模式、表名称和类型标准匹配的表描述。在您的情况下,目录和模式为null,这可能不正确(我的猜测),请使用适当的值填充它们。

相关内容

  • 没有找到相关文章

最新更新