0

データベース Firebird を使用する必要があり、そのために Jaybird 2.2.9 を使用しています。

MySQLドライバーを使用したとき、この方法へのコンバーターResultSetObject

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

しかし、ジェイバードで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;
    }
}
4

2 に答える 2

2

できません。Jaybird は、JDBC 4.2 のセクション 15.2.3 で指定されているラベルで列を取得します。Firebird では、列ラベルは元の列名または AS エイリアスのいずれかであり、テーブル名はこれには含まれません。曖昧さをなくすためにテーブル名にプレフィックスを付けることができる MySQL の拡張子は非標準です。

オプションは、クエリでエイリアスを指定してこのエイリアス名で取得するか、結果セットのメタデータを処理して各列の適切なインデックスを見つけ、代わりにインデックスで取得することです。

ただし、特定のクエリ ( などUNION) では、ResultSetMetaData.getTableNameテーブル名を返すことができないことに注意してください。これは、Firebird がテーブル名を「認識」していないためです (別のテーブルからの選択に UNION を適用する可能性があるため)。

于 2015-12-30T08:44:17.910 に答える
2

jdbc の名前にはテーブルが含まれません。

次のいずれかを実行できます

  • 位置パラメータを操作する (getString (1);など)

または

  • 選択で列名のエイリアスを定義します ( select a.name namefroma from tableone a)

または

  • 単純に rs.getString ("column"); を実行します。名前が明確な場合、テーブル接頭辞なし
于 2015-12-29T17:13:19.517 に答える