0

Java を使用して postgres データベースから inet データ型を取得するにはどうすればよいですか? 私が試してみました:

ResultSet foo = // query goes here //
foo.getString("loopback");

しかし、そうすると、「無効な列名」というSQL例外がスローされます。私の知る限り、Java の postgres inet に対応するデータ型はありません。私に何ができる?

4

1 に答える 1

2

Chris Travers への返信として投稿

私の元のクエリ:

    //Query returning the set of devices in a given market
    String stm ="SELECT device "
                "FROM mopdb.devices d " +
                "INNER JOIN mopdb.markets m " +
                "ON (d.market_id = m.market_id) " +
                "WHERE (m.short = ?) " +
                "ORDER BY d.device_id ";

デバイス テーブルの「デバイス」は、(明らかに) IP アドレス (明確にするために IPv4) であるループバックや OOB を含むいくつかの列で構成されます。

これは、ResultSet を取得して新しい「デバイス」オブジェクトを作成する行です。

    ResultSet d = DBUtilities.getDevicesFromMarket(m.toString());
    while(d.next()) {
        String loopback, oob;
        Device deviceName = new Device(d.getString("device"), 
                (DBInet.valueOf(d.getString("loopback"))),
                (DBInet.valueOf(oob = d.getString("oob"))), 
                d.getString("traffic_type"), d.getString("clli"),
                d.getString("rack"), d.getInt("market_id"),
                d.getString("codebase"));
        model.addElement(deviceName);
    }

DBInet.valueOf は、postgreSQL inet データ型の文字列表現を DBInet オブジェクトに変換する静的メソッドです。java.net.InetAddress のラッパー クラス。

The problem was that I was only selecting the "device" column from the device table. Below is the query which works as intended.

    //Query returning the set of devices in a given market
    String stm ="SELECT * " +
                "FROM mopdb.devices d " +
                "INNER JOIN mopdb.markets m " +
                "ON (d.market_id = m.market_id) " +
                "WHERE (m.short = ?) " +
                "ORDER BY d.device_id ";
于 2013-03-22T18:44:41.517 に答える