java同一列在两个数据库中有两个不同的名称
我正在维护一个代码,我们有两个数据库,用于两个当前正在工作的应用程序,使用相同的代码。但是,这两个数据库中有一个字段错误地使用了两个不同的名称,我们现在无法更正数据库。如何让我的代码了解哪个应用程序正在运行,并在查询中实时使用正确的字段
示例:
private integer testField;
数据库1中的查询:
SELECT name, family, test_name from Student;
在数据库2中查询:
SELECT name, family, test from Student;
# 1 楼答案
在软件启动时,您可以查询数据库以查找列的名称,例如使用ResultSetMetaData或使用特定于数据库的查询
然后,假设您至少有一个半体面的设计,而不是到处随机插入SQL,那么您可以修改查询以使用column name变量。当然,如果你的代码设计得很糟糕(这听起来很可能是考虑到了问题),这可能很难或不可能做到
编辑: 你是说你“没有访问数据库的权限”,但你的代码至少有。如果数据库中存在错误的名称,那么也可以使用上面的语句来检查它,执行
ALTER TABLE Student RENAME test TO test_name
语句(Postgres语法中给出的示例)。这假设您正在连接的数据库用户具有更改模式的权限