目前,我的 Java 程序中有一个方法,使用 JDBC 检查 MySQL 数据库中是否存在特定表。我遇到了一个逻辑错误,DatabaseMetaData.getTables() 方法从不同的数据库返回同名的表,现在我已经通过在语句中指定目录来解决这个问题,如下所示(表代表表名 I'我正在寻找)。
ResultSet tables = connectionToDatabase().getMetaData().getTables("snakeandladder", null, table, null);
但是,经过一些研究后,我看到很多人建议使用 Show Tables 来代替,但实际上并没有解释为什么要使用上面的 Show Tables。
有人可以向我解释使用上述语句的局限性以及为什么显示表格是更好的选择吗?
谢谢!
最佳答案
DatabaseMetaData.getTables() 更加可移植,大多数数据库(不仅是 MySQL)应该能够通过定义的 API 提供信息。
另一方面,使用 MySQL 特定查询“显示表;”可能弊大于利:
您引入了一个可以被攻击者利用的查询字符串,而且代码现在包含一个静态编译的查询字符串。
如果数据库提供程序发生变化,则必须更新代码(再次可移植性)
关于java - 在数据库中查找特定表时,为什么“显示表”比 DatabaseMetaData.getTables() 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61727058/