【发布时间】:2023-03-11 03:45:01
【问题描述】:
我试图弄清楚如何让这段最初为 MySQL 编写的代码与(Microsoft)SQL Server 一起工作。
当它被调用时,它应该打印出以表格形式存储在数据库中的航班目的地,(dbo.)London,(dbo.)NewYork 等。但是现在,它不会打印任何东西,不也有错误。我使用的是默认的 MSSQL 架构名称,dbo。
public void viewFlights(Connection conn) throws SQLException {
String SCHEMA_NAME="${dbo}";
try {
DatabaseMetaData metaData = conn.getMetaData();
String[] tableType = {"TABLE"};
ResultSet rs = metaData.getTables(null, SCHEMA_NAME, null, tableType);
while (rs.next()) {
String tableName = rs.getString(3);
System.out.println(tableName);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
知道我在这里错过了什么吗?
【问题讨论】:
-
你使用的架构名称是
${dbo},你试过dbo吗? -
同意“检查架构名称”。看来您的意思是要在其中插入一些变量“dbo”,但
getTables()不会做任何此类事情。此外:将数据存储在表名中是一个……有趣的……设计决策(并且充满了危险)。请重新考虑 - 例如,某些 rdbms(我认为 MySQL 是其中之一)不会像您对 db 对象名称所期望的那样保留大写/编码。另外:你几乎肯定想开始使用ResultSet的 try-with-resources。 -
@DavidBrowne-Microsoft 成功了,非常感谢!
标签: java sql-server jdbc