※ ChatGPTを利用し、要約された質問です(原文:Oracle 10g standardへのJDBC接続にてDataba)
Oracle 10g standardへのJDBC接続でgetTablesメソッドが機能しない問題はなぜ?
このQ&Aのポイント
Oracle 10g standardへのJDBC接続にて、DatabaseMetaData.getTablesメソッドが上手く機能しない現象が発生しています。プログラム内に記述した接続情報でNaviCatから接続すると問題なくテーブルが表示されることは確認済みです。また、同じプログラムで別のデータベースに接続する場合には問題なくテーブルが表示されます。
ドライバにはOracle 10g Expressのojdbc14.jarを使用しており、standard版への接続では正常にメソッドが機能しないことがあるようです。なぜこのような問題が発生するのでしょうか?
質問者はこの問題に対して解決策を求めています。どうすればOracle 10g standardへのJDBC接続でgetTablesメソッドが正常に機能するようになるのでしょうか?
Oracle 10g standardへのJDBC接続にてDataba
Oracle 10g standardへのJDBC接続にてDatabaseMetaData.getTablesメソッドが上手く機能しません。
以下のコードにてOracleに接続してテーブル一覧をコンソールに表示したいのですがgetTables()メソッドで返されるResultSetの中身が無い(レコードが0行)ようです。
プログラム内に記述した接続情報(URL、スキーマ、カタログ、ユーザー、パスワード)でNaviCatから当該Oracleに接続すると問題なくテーブルなどが表示される事は確認済みです。
また同じプログラムで別に用意したOracle 10g Expressを接続先として設定すると問題なくコンソールにテーブル名一覧が表示されます。
プログラムに使用しているドライバはOracle 10g Expressの中に同梱されていたojdbc14.jarです。
これでは standard 版へは正常にメソッドが機能しないケースがあるのでしょうか?
どうぞ宜しくお願いします。
import java.sql.*;
public class OracleConTest {
public static void main(String[] args) {
try{
// ドライバクラスをロード
Class.forName("oracle.jdbc.driver.OracleDriver");
// データベースへ接続
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:XXXX", "XXXXUSR", "XXXXPWD");
// ステートメントオブジェクトを生成
DatabaseMetaData meta = con.getMetaData();
ResultSet rs = meta.getTables( "XXXX", "XXXX", null, new String[] {"TABLE"});
while (rs.next()) {
String tableName = rs.getString("TABLE_NAME");
System.out.println(tableName);
}
rs.close();
}catch( Exception e){
e.printStackTrace();
}
}
}
お礼
回答ありがとうございます。 カタログ、スキーマ名を指定しないとテーブル名一覧が表示されました。 これはOracle側の権限の問題か何かでしょうか? やりたい事は達成出来ましたが、 カタログ、スキーマを指定してもテーブル名が取れるケースもあるので理由が気になります。 いずれにしても助かりました。ありがとうございます。