gpt4 book ai didi

java - 如何在结果集中获取字符串(Table.Column) JayBird

转载 作者:行者123 更新时间:2023-12-01 18:08:40 25 4
gpt4 key购买 nike

我需要使用数据库 Firebird,为此我使用 Jaybird 2.2.9。

当我使用 MySQL 驱动程序时,将 ResultSet 转换为 Object 如下:

empresa.setBairro(rs.getString("empresa.bairro")); // (Table.Column)
empresa.setCep(rs.getString("empresa.cep")); // (Table.Column)
empresa.setCidade(rs.getString("empresa.cidade")); // (Table.Column)

但是对于 Jaybird,resultSet 不会返回 rs.getString("Table.Column")

当我在 SQL 中进行内部联接时,我需要这种方式。

有人帮助我吗?

这是我的完整代码

public ContaLivros converterContaLivros(ResultSet rs, Integer linha) throws Exception {
if (rs.first()) {

rs.absolute(linha);

ContaLivros obj = new ContaLivros();

obj.setId(rs.getLong("cad_conta.auto_id"));
obj.setNome(rs.getString("cad_conta.nome"));


if (contain("cad_banco.auto_id", rs)) {

obj.setBancoLivros(converterBancoLivros(rs, linha));
} else {

obj.setBancoLivros(new BancoLivros(rs.getLong("cad_conta.banco"), null, null, null));
}
obj.setAgencia(rs.getInt("cad_conta.agencia"));
obj.setAgenciaDigito(rs.getInt("cad_conta.agencia_digito"));
obj.setConta(rs.getInt("cad_conta.conta"));
obj.setContaDigito(rs.getInt("cad_conta.conta_digito"));
obj.setLimite(rs.getDouble("cad_conta.limite"));
obj.setAtivo(rs.getString("cad_conta.ativo"));

return obj;
} else {
return null;
}
}

最佳答案

你不能。 Jaybird 按 JDBC 4.2 第 15.2.3 节中指定的标签检索列。在 Firebird 中,列标签要么是原始列名,要么是 AS 别名,表名不属于其中。您可以为表名添加前缀以消除歧义的 MySQL 扩展是非标准的。

您的选择是在查询中指定别名并按此别名进行检索,或者处理结果集元数据以找到每列的正确索引并按索引进行检索。

但是请注意,在某些查询中(例如 UNION),ResultSetMetaData.getTableName 无法返回表名称,因为 Firebird 不“知道”它(如您可以应用 UNION 从不同的表中进行选择)。

关于java - 如何在结果集中获取字符串(Table.Column) JayBird,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com