目次 | 前の項目 | 次の項目 JDBCTM ガイド: 入門


付録 C: 実装に関する注意

C.1     列の名前を使った ResultSet の検索

次は、ResultSetMetaData を使って ResultSet.findColumn と (たとえば) ResultSet.getString を実装するコード例です。

private java.util.Hashtable s2c;
	// Maps strings to column indexes
private ResultSetMetaData md;
	// Our metadata object.

public synchronized int findColumn(String columnName)
	throws SQLException {
	// Make a mapping cache if we don't already have one.
	if (md == null) {
	    md = getMetaData();
	    s2c = new java.util.Hashtable();
	}
	// Look for the mapping in our cache.
	Integer x = (Integer)s2c.get(columnName);
	if (x != null) {
	    return (x.intValue());
	}
	// OK, we'll have to use metadata.
	for (int i = 1; i < md.getColumnCount(); i++) {
	    if (md.getColumnName(i).equalsIgnoreCase(columnName)) {
		// Success!  Add an entry to the cache.
		s2c.put(columnName, new Integer(i));
		return (i);
	    }
	}
	throw new SQLException("Column name not found", "S0022");
}

// now the individual get-by-column-name methods are easy:

public String getString(String columnName) throws SQLException {
	return (getString(findColumn(columnName)));
}

C.2     オブジェクトのファイナライズ

アプレットでは、Statement や ResultSet や Connection などさまざまな JDBC オブジェクトの処理が終わった時点で、「クローズ」を呼び出すことになっています。しかし、これを怠っているアプレット、またはオブジェクトをクローズできるようになる前に終了しているアプレットがあります。

明示的に終了処理を行う必要のある JDBC オブジェクトに関する状態を JDBC ドライバが持っている場合は、ドライバでファイナライズメソッドをオブジェクトのために用意する必要があります。オブジェクトが不要であるとわかった場合、ガベージコレクタはこのファイナライズメソッドを呼び出します。これにより、ドライバは、オブジェクトを閉じたり、そのほかの終了処理を行う機会が得られます。ただし、ガベージコレクタが動作しているという保証はないので、ファイナライザの呼び出しに依存することはできません。



目次 | 前の項目 | 次の項目
jdbc@wombat.eng.sun.com または jdbc-odbc@wombat.eng.sun.com
Copyright © 1996, 1997 Sun Microsystems, Inc. All rights reserved.