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();
}
}
}
No.2ベストアンサー
- 回答日時:
試しにカタログ名やら、スキーマ名やらを検索の限定に使用しなかったらどうなりますか?
ResultSet rs = meta.getTables(null, null, "%", null);
参考URL:http://www.oracle.com/technology/sample_code/tec …
回答ありがとうございます。
カタログ、スキーマ名を指定しないとテーブル名一覧が表示されました。
これはOracle側の権限の問題か何かでしょうか?
やりたい事は達成出来ましたが、
カタログ、スキーマを指定してもテーブル名が取れるケースもあるので理由が気になります。
いずれにしても助かりました。ありがとうございます。
No.1
- 回答日時:
確認する環境がないので
気づいた点だけ挙げさせてもらうわ。
利用するドライバは
JDK1.4 > ojdbc14.jar
JDK1.5 > ojdbc5.jar
JDK1.6 > ojdbc6.jar
ないものは公式サイトからダウンロードすること。
oracle.jdbc.driver.OracleDriver
ではなく
oracle.jdbc.OracleDriver
を使うこと。
回答ありがとうございます。
新しいOracleは
oracle.jdbc.OracleDriver
を使用した方が良いんですね。
勉強になりました。
問題自体は以下のようにカタログ、スキーマを指定しなかったら解決しました。
先に試しておけば良かったです。
("%"を null にするのは試したんですが。。)
ResultSet rs = meta.getTables(null, null, "%", new String[] {"TABLE"});
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Java java final 1 2022/06/10 22:49
- ルーター・ネットワーク機器 AU光10G回線について 6 2022/07/25 00:12
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORACLEに接続できない
-
OracleInProcServer.XOraSessio...
-
●Excel VBAからSQLServerのデー...
-
メールを変数の中に入れたいの...
-
PHPを始めるにあたって質問です。
-
VB.NET ORA-12170
-
System.Net.Sockets.SocketExce...
-
COBOL 2002 でデータベースの接続
-
ctfmon.exe。スタック ベースの...
-
TeraTermマクロの”Link...
-
タスクバーのボタンがオレンジ...
-
web.configとは?(初心者です)
-
実行プログラム名の取得
-
Tomcatでアクセス制限をしたい
-
テキストファイルを音声ファイ...
-
Windowsサーバー、PHPでアクセ...
-
信長の野望 革新について
-
Spy++の起動方法、使い方
-
「予期しないエラーが発生しま...
-
EXCEL「Dictionaryオブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OracleInProcServer.XOraSessio...
-
VisualStudioでのプログラミン...
-
System.Net.Sockets.SocketExce...
-
データベース接続/切断の基本的...
-
●Excel VBAからSQLServerのデー...
-
c#のTLS1.2での通信について
-
ローカル側のC#から、リモート...
-
PerlからOracleに接続
-
VB6.0のコードによるMySQLへの接続
-
VB.NET Oracle接続 クライアン...
-
VB.NET ORA-12170
-
Android端末から外部DB(MYSQL...
-
FFFTPでファイル一覧を取得でき...
-
.NETでodbc接続したい。
-
javascriptでSQLite接続
-
ASP.NETのパフォーマンスと接続...
-
ASP.NETでSQL-SERVERへの接続方法
-
Cでデータベース操作
-
Delphi でOracleのデータを表示...
-
Tomcat FireBird(データベー...
おすすめ情報