有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java同一列在两个数据库中有两个不同的名称

我正在维护一个代码,我们有两个数据库,用于两个当前正在工作的应用程序,使用相同的代码。但是,这两个数据库中有一个字段错误地使用了两个不同的名称,我们现在无法更正数据库。如何让我的代码了解哪个应用程序正在运行,并在查询中实时使用正确的字段

示例:

private integer testField;

数据库1中的查询:

SELECT name, family, test_name from Student;

在数据库2中查询:

SELECT name, family, test from Student;

共 (1) 个答案

  1. # 1 楼答案

    在软件启动时,您可以查询数据库以查找列的名称,例如使用ResultSetMetaData或使用特定于数据库的查询

    然后,假设您至少有一个半体面的设计,而不是到处随机插入SQL,那么您可以修改查询以使用column name变量。当然,如果你的代码设计得很糟糕(这听起来很可能是考虑到了问题),这可能很难或不可能做到

    编辑: 你是说你“没有访问数据库的权限”,但你的代码至少有。如果数据库中存在错误的名称,那么也可以使用上面的语句来检查它,执行ALTER TABLE Student RENAME test TO test_name语句(Postgres语法中给出的示例)。这假设您正在连接的数据库用户具有更改模式的权限