31.8. PostgreSQLJDBC APIへの拡張

PostgreSQL は拡張可能なデータベースシステムです。 問い合わせから呼び出すことができる、独自の関数をバックエンドに追加することができます。 独自の型さえも追加することができます。 こういったPostgreSQL独特な機構がありますので、Java でもこれを APIの拡張セットを用意してサポートします。 実際、標準ドライバの中核でも、ラージオブジェクトなどの実装のためにこの拡張を使用しています。

31.8.1. 拡張機能へのアクセス

いくつかの拡張機能にアクセスするには、org.postgresql.PGConnection クラスの追加メソッドのいくつかを使用しなければいけません。 この場合、Driver.getConnection() からの戻り値をキャストしなければいけません。 たとえば、以下のようにします。

Connection db = Driver.getConnection(url, username, password);
// ...
// 後で
Fastpath fp = ((org.postgresql.PGConnection)db).getFastpathAPI();

31.8.1.1. org.postgresql.PGConnectionクラス

public class PGConnection 

ここには、PostgreSQL の拡張にアクセスするために使用される追加メソッドがあります。

31.8.1.1.1. メソッド

  • public Fastpath getFastpathAPI() throws SQLException

    現在の接続用の近道APIを返します。 主にラージオブジェクト APIで使用されます。

    この関数を使用する最善の方法は次のようなものです。

    import org.postgresql.fastpath.*;
    ...
    Fastpath fp = ((org.postgresql.PGConnection)myconn).getFastpathAPI();

    ここで、myconn は開いている PostgreSQL への Connection オブジェクトです。

    戻り値: PostgreSQLサーバにある関数へのアクセスを可能にするFastpathオブジェクト。

    例外: SQLExceptionFastpathの初回の初期化時にスローされる可能性があります。

  • public LargeObjectManager getLargeObjectAPI() throws SQLException

    現在の接続用のラージオブジェクト API を返します。

    この関数を使用する最善の方法は次のようなものです。

    import org.postgresql.largeobject.*;
    ...
    LargeObjectManager lo = ((org.postgresql.PGConnection)myconn).getLargeObjectAPI();

    ここで、myconn は開いている PostgreSQL への Connection オブジェクトです。

    戻り値: API を実装した LargeObject オブジェクト。

    例外: SQLExceptionLargeObject の初回の初期化時にスローされる可能性があります。

  • public void addDataType(String type, String name)

    これによってクライアントのコードが、多くの PostgreSQL 独特のデータ型のためのハンドラを追加することができます。 通常、ドライバで認識されないデータ型は、PGobject のインスタンスとして ResultSet.getObject() から返されます。 このメソッドを使って、PGobject を拡張したクラスを書くことや、ドライバに型名と使用するクラス名を通知することができます。 欠点は、接続を確立するたびにこのメソッドを呼び出さなければならないことです。

    この関数を使用する最善の方法は次のようなものです。

     ...
    ((org.postgresql.PGConnection)myconn).addDataType("mytype","my.class.name");
     ...

    ここで、myconn は開いている PostgreSQL への Connection オブジェクトです。 取り扱うクラスは org.postgresql.util.PGobject を継承する必要があります。

31.8.1.2. org.postgresql.Fastpathクラス

public class Fastpath extends Object

java.lang.Object
   |
   +----org.postgresql.fastpath.Fastpath

Fastpathlibpq Cインタフェース内に存在する APIで、これによってクライアントマシンはデータベースサーバにある関数を実行することができます。 ほとんどのクライアントコードでは、このメソッドを使用する必要がありません。 しかし、ラージオブジェクトAPIで使用するために用意されています。

使用するためには、次のようにして org.postgresql.fastpathパッケージをインポートしなければいけません。

import org.postgresql.fastpath.*;

そして、FastPathオブジェクトを入手したい時に次のコードを書きます。

Fastpath fp = ((org.postgresql.PGConnection)conn).getFastpathAPI();

これはデータベース接続に関連付けられた、コマンドを発行する際に使用するインスタンスを返します。 getFastpathAPI()JDBCには無い拡張メソッドですので、Connectionオブジェクトをorg.postgresql.PGConnectionオブジェクトにキャストする必要があります。 Fastpathインスタンスを所有すれば、fastpath()メソッドを使用してサーバ関数を実行することができます。

関連項目: Fastpath, FastpathArg, LargeObject

31.8.1.2.1. メソッド

  • public Object fastpath(int fnid,
                           boolean resulttype,
                           FastpathArg args[]) throws SQLException

    PostgreSQLサーバへ関数呼び出しを送信します。

    パラメータ: fnid - 関数ID resulttype - 結果が整数の場合真、他の結果の場合は偽 args - 近道呼び出しに渡すFastpathArguments

    戻り値: データがない場合、null。 結果が整数の場合は、整数、さもなくば、byte[]。

  • public Object fastpath(String name,
                           boolean resulttype,
                           FastpathArg args[]) throws SQLException

    PostgreSQLサーバへ関数呼び出しを名前により送信します。

    注意: 通常は事前に addfunction()を呼び出して、プロシージャ名を関数IDに割り当てておく必要があります。 関数IDはサーバのバージョンによって異なりますので、このメソッドの呼び出しは推奨されています。 このメソッドの使用例については org.postgresql.LargeObject を参照してください。

    パラメータ: name - 関数名 resulttype - 結果が整数の場合は真、他の結果の場合は偽 args - 近道呼び出しに渡すFastpathArguments

    戻り値: データがない場合、null。 結果が整数の場合は、整数、さもなくば、byte[]。

    関連項目: LargeObject

  • public int getInteger(String name,
                          FastpathArg args[]) throws SQLException

    この簡易メソッドは結果の値が整数であることを仮定しています。

    パラメータ: name - 関数名 args - 関数への引数

    戻り値: 整数の結果

    例外: データベースアクセスエラーが発生した場合や結果がない場合、SQLException

  • public byte[] getData(String name,
                          FastpathArg args[]) throws SQLException

    この簡易メソッドは結果の値がバイナリデータであると仮定しています。

    パラメータ: name - 関数名 args - 関数への引数

    戻り値: 結果を構成する byte[] 配列

    例外: データベースアクセスエラーが発生した場合や結果がない場合、SQLException

  • public void addFunction(String name,
                            int fnid)

    これは関数を検索テーブルに追加します。 ユーザコードでは addFunctionsメソッドを使用するべきです。 このメソッドはOIDを直接記述するのではなく、問い合わせに基づいています。 関数のOIDが変動せずに維持されることは保証されていませんし、同一のバージョンのサーバ間でさえも異なります。

  • public void addFunctions(ResultSet rs) throws SQLException

    このメソッドは2つの列を持つResultSetを引数としてとります。 列1には関数名、列2にはそのOIDが入ります。 ResultSet 全体を読み取り、その値を関数テーブル中に読み込みます。

    重要項目: このメソッドを呼び出した後に ResultSetclose() することを忘れないでください。

    関数名の検索に関する実装時の注意書き: PostgreSQL は関数 ID と ID に対応する名前を pg_proc テーブルに保存します。 ローカルで処理速度を上げるために、要求に応じてこのテーブルに関数を問い合わせるのではなく Hashtable が使用されています。 また、できる限り高速な接続時間を維持するために、関数の必須項目のみがこのテーブルに登録されています。

    org.postgresql.LargeObject クラスは、その起動時に問い合わせを行い、この段階で返された ResultSetaddFunctions() メソッドに渡します。 これを行った後、ラージオブジェクト APIはその関数を名前で参照します。

    手作業による OID への変換ができるとは考えないでください。 現時点では手作業でも問題ありませんが、開発を通して変更されます (V7.0 でもこの問題について議論が何回かありました)。 ですから、これは将来の不当な問題を防ぐために実装されています。

    関連項目: LargeObjectManager

  • public int getID(String name) throws SQLException

    このメソッドは名前に関連付けられた関数 ID を返します。 指定した名前に対してaddFunction() または addFunctions() が呼び出されていなければ、SQLException が発生します。

31.8.1.3. org.postgresql.fastpath.FastpathArgクラス

public class FastpathArg extends Object

java.lang.Object
   |
   +----org.postgresql.fastpath.FastpathArg

各近道呼び出しは引数の配列、引数の数、呼び出される関数に依存する型を必要とします。 このクラスはこの能力を提供するために必要なメソッドを実装します。

このクラスの使用例については、org.postgresql.LargeObject パッケージを参照してください。

関連項目: Fastpath, LargeObjectManager, LargeObject

31.8.1.3.1. コンストラクタ

  • public FastpathArg(int value)

    整数値の引数で構築します。

    パラメータ: value - 設定する整数値

  • public FastpathArg(byte bytes[])

    byte 型配列の引数で構築します。

    パラメータ: bytes - 保存する配列

  • public FastpathArg(byte buf[],
                       int off,
                       int len)

    byte 型配列の引数の一部分で構築します。

    パラメータ:

    buf

    元となる配列

    off

    配列内のオフセット

    len

    使用するデータの長さ

  • public FastpathArg(String s)

    String 型の引数で構築します。

31.8.2. 幾何データ型

PostgreSQL には、幾何的な性質をテーブルに格納することができる、データ型群があります。 単一の点、直線、多角形などがあります。 org.postgresql.geometric パッケージにて、これらの型を Java でサポートします。 このパッケージは、 org.postgresql.util.PGobject を継承したクラスより構成されています。 独自のデータ型ハンドラの実装方法に関する詳細については、このクラスを参照して下さい。

Class org.postgresql.geometric.PGbox

java.lang.Object
   |
   +----org.postgresql.util.PGobject
           |
           +----org.postgresql.geometric.PGbox

   public class PGbox extends PGobject implements Serializable, 
Cloneable

   このクラスは、PostgreSQL の box データ型を表現します。

変数

 public PGpoint point[]

          ボックスの 2 つの頂点があります。

コンストラクタ

 public PGbox(double x1,
              double y1,
              double x2,
              double y2)

        パラメータ:
                x1 - 1 番目の x 座標値
                y1 - 1 番目の y 座標値
                x2 - 2 番目の x 座標値
                y2 - 2 番目の y 座標値

 public PGbox(PGpoint p1,
              PGpoint p2)

        パラメータ:
                p1 - 1 番目の点
                p2 - 2 番目の点

 public PGbox(String s) throws SQLException
                            
        パラメータ:
                s - PostgreSQL の構文におけるボックスの定義

        例外:   SQLException
                定義が無効の場合
                
 public PGbox()

          必要なコンストラクタ

              
メソッド

 public void setValue(String value) throws SQLException
                
          このメソッドは、オブジェクトの値を設定します。これはオーバーライドすべきものですが、現状、サブクラスから呼び出されます。
                            
        パラメータ:
                value - このオブジェクトの値を表す文字列
        例外: SQLException
              value がこの型に不適切だった場合

        オーバーライド:
                クラス PGobject 内の setValue

 public boolean equals(Object obj)

        パラメータ:
                obj - 比較対象オブジェクト
                
        戻り値:
                2 つのボックスが同一の場合 true
          
        オーバーライド:
                クラス PGobject 内の equals

 public Object clone()
        
          オブジェクトの複製を許可する場合にオーバーライドする必要があります。

        オーバーライド:
                クラス PGobject 内の clone
   
 public String getValue()
        
        戻り値:
                PostgreSQL で想定される構文による PGbox

        オーバーライド:
                クラス PGobject 内の getValue

Class org.postgresql.geometric.PGcircle

java.lang.Object
   |
   +----org.postgresql.util.PGobject
           |
           +----org.postgresql.geometric.PGcircle
        
   public class PGcircle extends PGobject implements Serializable, 
Cloneable
               
   このクラスは中心と半径から構成される、PostgreSQL の circle データ型を表現します。

変数

 public PGpoint center
           
          この円の中心点
 
 double radius
           
          この円の半径
   
コンストラクタ

 public PGcircle(double x,
                 double y,
                 double r)
          
        パラメータ:
               x - 中心座標値
               y - 中心座標値
               r - 円の半径

 public PGcircle(PGpoint c,
                 double r)
          
        パラメータ:
                c - 円の中心を表す PGpoint
                r - 円の半径


 public PGcircle(String s) throws SQLException

        パラメータ:
                s - PostgreSQL の構文における円の定義

        例外:   SQLException
                変換失敗時

 public PGcircle()

          このコンストラクタはドライバによって使用されます。

            
メソッド

 public void setValue(String s) throws SQLException

        パラメータ:
                s - PostgreSQL の構文における円の定義

        例外:   SQLException
                変換失敗時

        オーバーライド:
                クラス PGobject 内の setValue

 public boolean equals(Object obj)

        パラメータ:
                obj - 比較対象オブジェクト
            
        戻り値:
                2 つの円が同一の場合 true

        オーバーライド:
                クラス PGobject 内の equals

 public Object clone()

          オブジェクトの複製を許可する場合にオーバーライドする必要があります。

        オーバーライド:
                クラス PGobject 内の clone

 public String getValue()

        戻り値:
                PostgreSQL が想定している構文での PGcircle
        
        オーバーライド:
                クラス PGobject 内の getValue

Class org.postgresql.geometric.PGline

java.lang.Object
   |
   +----org.postgresql.util.PGobject
           |
           +----org.postgresql.geometric.PGline

   public class PGline extends PGobject implements Serializable, 
Cloneable

   このクラスは、2 つの点からなる直線を実装します。 現時点では、サーバにおいてまだ直線は実装されていませんが、このクラスは実装に備えて準備されています。

変数
   
 public PGpoint point[]
     
2 つの点があります。

コンストラクタ

 public PGline(double x1,
               double y1,
               double x2,
               double y2)

        パラメータ:
                x1 - 1 番目の点の座標値
                y1 - 1 番目の点の座標値
                x2 - 2 番目の点の座標値
                y2 - 2 番目の点の座標値

 public PGline(PGpoint p1,
               PGpoint p2)
     
        パラメータ:
                p1 - 1 番目の点
                p2 - 2 番目の点

 public PGline(String s) throws SQLException
               
        パラメータ:
                s - PostgreSQL の構文における直線の定義

        例外:   SQLException
                変換失敗時

 public PGline()

          ドライバによって必要とされます。
               
メソッド

 public void setValue(String s) throws SQLException

        パラメータ:
                s - PostgreSQL 構文における線分の定義


        例外:   SQLException
                変換失敗時

        オーバーライド:
                クラス PGobject 内の setValue
                
 public boolean equals(Object obj)

        パラメータ:
                obj - 比較対象オブジェクト
               
        戻り値:
                2 つの直線が同一の場合 true
   
        オーバーライド:
                クラス PGobject 内の equals

 public Object clone()
        
          オブジェクトの複製を許可する場合にオーバーライドする必要があります。

        オーバーライド:
                クラス PGobject 内の clone

 public String getValue()
   
        戻り値:
                PostgreSQL で想定される構文の PGline
        
        オーバーライド:
                クラス PGobject 内の getValue

Class org.postgresql.geometric.PGlseg
             
java.lang.Object
   |
   +----org.postgresql.util.PGobject
           |
           +----org.postgresql.geometric.PGlseg
          
   public class PGlseg extends PGobject implements Serializable, 
Cloneable
 
   このクラスは 2 つの点からなる lseg (線分) を実装します。

変数

 public PGpoint point[]
           
2つの点があります。

コンストラクタ
   
 public PGlseg(double x1,
               double y1,
               double x2,
               double y2)
     
        パラメータ:

                x1 - 1 番目の点の座標値
                y1 - 1 番目の点の座標値
                x2 - 2 番目の点の座標値
                y2 - 2 番目の点の座標値

 public PGlseg(PGpoint p1,
               PGpoint p2)
           
        パラメータ:
                p1 - 1 番目の点
                p2 - 2 番目の点
   
 public PGlseg(String s) throws SQLException

        パラメータ:
                s - PostgreSQL 構文における線分の定義

        例外:   SQLException
                変換失敗時

 public PGlseg()

          ドライバによって必要とされます。

               
メソッド

   
 public void setValue(String s) throws SQLException
   
        パラメータ:
                s - PostgreSQL 構文における線分の定義 


        例外:   SQLException
                変換失敗時
     
        オーバーライド:
                クラス PGobject 内の setValue
                
 public boolean equals(Object obj)

        パラメータ:
                obj - 比較対象オブジェクト
               
        戻り値:
                2 つの線分が同一の場合 true
   
        オーバーライド:
                クラス PGobject 内の equals
   
 public Object clone()

          オブジェクトの複製を許可する場合にオーバーライドする必要があります。

        オーバーライド:
               クラス PGobject 内の clone

 public String getValue()

        戻り値:
                PostgreSQL で想定される構文の PGlseg
        
        オーバーライド:
                クラス PGobject 内の getValue

Class org.postgresql.geometric.PGpath
                                
java.lang.Object
   |
   +----org.postgresql.util.PGobject
           |
           +----org.postgresql.geometric.PGpath
          
   public class PGpath extends PGobject implements Serializable, 
Cloneable
               
   このクラスは経路 (複数の線分。閉じた場合もあります) を実装します。
           
変数

 public boolean open
               
          開いた経路の場合 true 、閉じた経路の場合 false

 public PGpoint points[]

          経路を定義する点

コンストラクタ

 public PGpath(PGpoint points[],
               boolean open)
          
        パラメータ:
                points - 経路を定義する PGpoint
                open - 開いた経路の場合 true 、閉じた経路の場合 false

 public PGpath()

          ドライバによって必要とされます。

 public PGpath(String s) throws SQLException

        パラメータ:
                s - PostgreSQL 構文における経路の定義

        例外:   SQLException
                変換失敗時

メソッド

 public void setValue(String s) throws SQLException
   
        パラメータ:
                s - PostgreSQL 構文における経路の定義
           
        例外:   SQLException
                変換失敗時

        オーバーライド:
                クラス PGobject 内の setValue

 public boolean equals(Object obj)

        パラメータ:
                obj - 比較対象オブジェクト

        戻り値:
                2 つの経路が同一の場合 true

        オーバーライド:
                クラス PGobject 内の equals

 public Object clone()

          オブジェクトの複製を許可する場合にオーバーライドする必要があります。

        オーバーライド:
                クラス PGobject 内の clone

 public String getValue()

          このメソッドは、PostgreSQL で想定される構文における経路を返します。

        オーバーライド:
                クラス PGobject 内の getValue


 public boolean isOpen()

     開いた経路の場合 true を返します。

 public boolean isClosed()

     閉じた経路の場合 true を返します。

 public void closePath()

     閉じた経路として印をつけます。

 public void openPath()

     開いた経路として印をつけます。

Class org.postgresql.geometric.PGpoint
                                
java.lang.Object
   |
   +----org.postgresql.util.PGobject
           |
           +----org.postgresql.geometric.PGpoint
          
   public class PGpoint extends PGobject implements Serializable, 
Cloneable

   このクラスは、座標を double で表した java.awt.Point 版を実装します。ただし、これは座標の表現にdoubleを使用しています。

   これは PostgreSQL 内の point データ型に割り当てられます。

変数

 public double x

          点の X 座標

 public double y

          点の Y 座標

コンストラクタ

 public PGpoint(double x,
                double y)

        パラメータ:
                x - 座標値
                y - 座標値

 public PGpoint(String value) throws SQLException
     
             
        Parameters:
                value - Definition of this point in PostgreSQL's 
syntax
-->
          これは主に他の、その定義に点が組み込まれている幾何データ型から呼び出されます。

        パラメータ:
                value - PostgreSQL 構文における点の定義
   
 public PGpoint()
          
          ドライバによって必要とされます。

メソッド

 public void setValue(String s) throws SQLException

        パラメータ:
                s - PostgreSQL 構文における点の定義

        例外:   SQLException
                変換失敗時

        オーバーライド:
                クラス PGobject 内の setValue
          
 public boolean equals(Object obj)

        パラメータ:
                obj - 比較対象オブジェクト

        戻り値:
                2 つの点が同一の場合 true

        オーバーライド:
                クラス PGobject 内の equals

 public Object clone()
                
          オブジェクトの複製を許可する場合にオーバーライドする必要があります。

        オーバーライド:
                クラス PGobject 内の clone
          
 public String getValue()       
    
        戻り値:
                PostgreSQL で想定される構文における PGpoint

        オーバーライド:
                クラス PGobject 内の getValue
          
 public void translate(int x,
                       int y)

          指定された量だけ点を平行移動します。

        パラメータ:
                x - x 軸に加算する整数
                y - y 軸に加算する整数


 public void translate(double x,
                       double y)
          
          指定された量だけ点を平行移動します。
 
        パラメータ:
                x - x 軸に加算する浮動小数値
                y - y 軸に加算する浮動小数値

 public void move(int x,
                  int y)
                
          指定された座標に点を移動します。

        パラメータ:
                x - 整数座標値
                y - 整数座標値

public void move(double x,
                  double y)
          
          指定された座標に点を移動します。

        パラメータ:
                x - 浮動小数座標値
                y - 浮動小数座標値


 public void setLocation(int x,
                         int y)

          与えられた量で点を移動します。 この説明については java.awt.Point を参照して下さい。


        パラメータ:
                x - 整数座標値
                y - 整数座標値

        関連項目:
                Point

 public void setLocation(Point p)

          与えられた量で点を移動します。 この説明については java.awt.Point を参照して下さい。


        パラメータ:
                p - 移動する点

        関連項目:
                Point


Class org.postgresql.geometric.PGpolygon
                                
java.lang.Object
   |
   +----org.postgresql.util.PGobject
           |
           +----org.postgresql.geometric.PGpolygon

   public class PGpolygon extends PGobject implements Serializable, 
Cloneable
               
   このクラスは、PostgreSQL の polygon データ型を実装します。

変数

 public PGpoint points[]

          多角形を定義する点。
                                
コンストラクタ

 public PGpolygon(PGpoint points[])

          PGpoints の配列を使用した多角形の作成を行います。

        パラメータ:
                points - 多角形を定義する点。

 public PGpolygon(String s) throws SQLException
                 
        パラメータ:
                s - PostgreSQL の構文を使用した多角形の定義。

        例外:   SQLException
                変換失敗時

 public PGpolygon()

          ドライバによって必要とされます。

メソッド

 public void setValue(String s) throws SQLException

        パラメータ:
                s - PostgreSQL の構文を使用した多角形の定義。

        例外:   SQLException
                変換失敗時

        オーバーライド:
                クラス PGobject 内の setValue

 public boolean equals(Object obj)
     
        パラメータ:
                obj - 比較対象オブジェクト
                                
        戻り値:
                2 つの多角形が同一の場合、true

        オーバーライド:
                クラス PGobject 内の equals

 public Object clone()
        
          オブジェクトの複製を許可する場合にオーバーライドする必要があります。

        オーバーライド:
                クラス PGobject 内の clone
                 
 public String getValue()

        戻り値:
                PostgreSQL が想定する構文における PGpolygon

        オーバーライド:
                クラス PGobject 内の getValue

31.8.3. ラージオブジェクト

ラージオブジェクトは標準 JDBC 仕様でサポートされていますが、そのインタフェースは制限されています。 PostgreSQL で提供される API では、ローカルファイル同様にオブジェクトの内容へのランダムアクセスを行うことができます。

org.postgresql.largeobject パッケージは、Java に libpq C インタフェースのラージオブジェクト API を提供します。 このパッケージは、ラージオブジェクトの作成、オープン、削除を扱う LargeObjectManager と個々のオブジェクトを扱う LargeObject という 2 つのクラスから構成されます。

31.8.3.1. org.postgresql.largeobject.LargeObjectクラス

public class LargeObject extends Object

java.lang.Object
   |
   +----org.postgresql.largeobject.LargeObject

このクラスは PostgreSQL のラージオブジェクトインタフェースを実装します。

インタフェースを実行するために必要な基本的なメソッドと、このオブジェクト用の InputStream および OutputStream クラスを提供する 2 つのメソッドを提供します。

通常、クライアントコードはラージオブジェクトにアクセスするために BLOB のメソッドを使用します。

しかし、ラージオブジェクトに、JDBC 仕様ではサポートされていない、低レベルなアクセスが必要な場合があります。

ラージオブジェクトへのアクセスの入手方法や作成方法については org.postgresql.largeobject.LargeObjectManager を参照して下さい。

関連項目: LargeObjectManager

31.8.3.1.1. 変数

public static final int SEEK_SET

ファイルの先頭からシークすることを示します。

public static final int SEEK_CUR

現在位置からシークすることを示します。

public static final int SEEK_END

ファイルの終りからシークすることを示します。

31.8.3.1.2. メソッド

  • public int getOID()

    LargeObject の OID を返します。

  • public void close() throws SQLException

    このメソッドは、オブジェクトを閉じます。 このメソッドを呼び出した後、このオブジェクトのメソッドを呼び出してはいけません。

  • public byte[] read(int len) throws SQLException

    オブジェクトの一部のデータを読み、byte[] 配列として返します。

  • public int read(byte buf[],
                     int off,
                     int len) throws SQLException

    オブジェクトの一部のデータを既存の配列に読み込みます。

    パラメータ:

    buf

    書き込み元配列

    off

    配列内のオフセット

    len

    読み込むバイト数

  • public void write(byte buf[]) throws SQLException

    オブジェクトに配列を書き込みます。

  • public void write(byte buf[],
                      int off,
                      int len) throws SQLException

    配列の一部をオブジェクトに書き込みます。

    パラメータ:

    buf

    書き込み元配列

    off

    配列内のオフセット

    len

    書き込むバイト数

31.8.3.2. org.postgresql.largeobject.LargeObjectManagerクラス

                                
public class LargeObjectManager extends Object

java.lang.Object
   |
   +----org.postgresql.largeobject.LargeObjectManager

このクラスは PostgreSQL のラージオブジェクトインタフェースを実装します。 クライアントコードによる、ラージオブジェクトの作成、オープン、削除をデータベースに対して実行することができるメソッドを提供します。 オブジェクトを開くと、org.postgresql.largeobject.LargeObject のインスタンスが返され、そのクラスのメソッドを使用してオブジェクトにアクセスすることができます。

このクラスは、org.postgresql.PGConnection によってのみ作成することができます。 このクラスへアクセスするには、以下に示すコードを使用して下さい。

import org.postgresql.largeobject.*;
Connection  conn;
LargeObjectManager lobj;
// ... 接続を開くコード
lobj = ((org.postgresql.PGConnection)myconn).getLargeObjectAPI();

通常、クライアントコードはラージオブジェクトにアクセスするために BLOB メソッドを使用します。 しかし、ラージオブジェクトに、JDBC 仕様ではサポートされていない、低レベルなアクセスが必要な場合があります。

ラージオブジェクトの内容の操作方法については org.postgresql.largeobject.LargeObject を参照して下さい。

31.8.3.2.1. 変数

public static final int WRITE

オブジェクトに書き込みを行うことを示すモードです。

public static final int READ

オブジェクトに読み込みを行うことを示すモードです。

public static final int READWRITE

このモードはデフォルトです。 ラージオブジェクトの読み込み、書き込みを行うことを示します。

31.8.3.2.2. メソッド

  • public LargeObject open(int oid) throws SQLException

    このメソッドは、既存のラージオブジェクトをその OID に基づいて開きます。 このメソッドは、READ 権および WRITE 権が必要とされることを前提 (デフォルト) とします。

  • public LargeObject open(int oid,
                            int mode) throws SQLException

    このメソッドは、既存のラージオブジェクトをそのOIDに基づいて、開きます。 アクセスモードを設定することができます。

  • public int create() throws SQLException

    このメソッドは、ラージオブジェクトを作成し、そのOIDを返します。 新しいオブジェクトの属性のデフォルトは READWRITE です。

  • public int create(int mode) throws SQLException

    このメソッドは、ラージオブジェクトを作成し、その OID を返します。 また、アクセスモードを設定します。

  • public void delete(int oid) throws SQLException

    このメソッドは、ラージオブジェクトを削除します。

  • public void unlink(int oid) throws SQLException

    このメソッドは、ラージオブジェクトを削除します。 delete メソッドと同じです。 C APIにおける"unlink"の使用方法を提供します。