Java を使用して postgres データベースから inet データ型を取得するにはどうすればよいですか? 私が試してみました:
ResultSet foo = // query goes here //
foo.getString("loopback");
しかし、そうすると、「無効な列名」というSQL例外がスローされます。私の知る限り、Java の postgres inet に対応するデータ型はありません。私に何ができる?
Java を使用して postgres データベースから inet データ型を取得するにはどうすればよいですか? 私が試してみました:
ResultSet foo = // query goes here //
foo.getString("loopback");
しかし、そうすると、「無効な列名」というSQL例外がスローされます。私の知る限り、Java の postgres inet に対応するデータ型はありません。私に何ができる?
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 ";