我想检查一个名为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 database
SQL错误。
下面不是最好的方法。。但您可以执行以下操作:
使用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,这可能不正确(我的猜测),请使用适当的值填充它们。