Java 尝试使用JDBC测试MySQL数据库中是否存在特定表时出错
我想检查使用JDBC的Java程序的MySQL表中是否存在名为Java 尝试使用JDBC测试MySQL数据库中是否存在特定表时出错,java,mysql,jdbc,resultset,database-metadata,Java,Mysql,Jdbc,Resultset,Database Metadata,我想检查使用JDBC的Java程序的MySQL表中是否存在名为basestation的表。我的代码是: conn = DriverManager.getConnection(url, username, password); DatabaseMetaData dbm = conn.getMetaData(); tables = dbm.getTables(null, null, "basestations", null); if (tables.next()) { //Ta
basestation
的表。我的代码是:
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
//...
}
但是,尽管我的数据库中存在表
基站
,但我的代码似乎从未进入第一个子句,总是决定表不存在,这自然会导致数据库中已经存在一个表
在尝试从头创建表时出现SQL错误。我怀疑您的getTables()这里什么也不退。根据getTables文档只返回与目录、架构、表名和类型标准匹配的表描述。在您的情况下,catalog和schema为null,这可能不正确(我猜),请使用正确的值填充它们。我怀疑您的getTables()在这里没有返回任何内容。根据getTables文档只返回与目录、架构、表名和类型标准匹配的表描述。在您的情况下,目录和模式为空,这可能不正确(我猜),请使用正确的值填充它们。下面不是最好的方法。。但您可以执行以下操作:
使用JDBC发送以下语句:
select count(*) from information_schema.tables where information_schema.table_schema='your_schema' and information_schema.table_name='basestations';
解析jdbc结果集
应该返回1或0。如果结果计数为1,则该表存在,否则不存在。这不是下面执行此操作的最佳方法。。但您可以执行以下操作: 使用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(null,null,null,null)提供输出代码>?如果使用“基站”
或“`BASESTATIONS`”
,会发生什么情况?能否提供getTables的输出(null,null,null,null)代码>?如果使用“基站”
或“`BASESTATIONS`”
,会发生什么情况?阅读文档:null
表示“忽略过滤器的这一部分”。@thinkstip:不,它肯定会返回一些内容阅读文档:null
表示“忽略过滤器的这一部分”。@thinkstip:不,它肯定会返回一些内容