![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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ランキング
-
OracleInProcServer.XOraSessio...
-
System.Net.Sockets.SocketExce...
-
JAVAでderbyに接続できない
-
データベース接続/切断の基本的...
-
VB.NET ORA-12170
-
DB接続の関数化
-
ASP.NETのパフォーマンスと接続...
-
asp.netでoracle接続
-
ctfmon.exe。スタック ベースの...
-
TeraTermマクロの”Link...
-
web.configとは?(初心者です)
-
タスクバーのボタンがオレンジ...
-
コマンドボタンのキャプション...
-
有効なwin32アプリケーションで...
-
スマートフォンでSQL Serverと...
-
windows vistaで、最近 KACT2
-
タイマーマクロの二重起動防止...
-
エクセルで『DTPicker』が削除...
-
HRESULTからの例外:0x8007000B
-
VistaHomePremiumにPostgreSQL8...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
OracleInProcServer.XOraSessio...
-
System.Net.Sockets.SocketExce...
-
データベース接続/切断の基本的...
-
c#のTLS1.2での通信について
-
javascriptでSQLite接続
-
VB6.0のコードによるMySQLへの接続
-
ASP.NETでSQL-SERVERへの接続方法
-
ConnectNamedPipeの接続待ち
-
DataAdapterだけじゃダメ?
-
Android端末から外部DB(MYSQL...
-
Cでデータベース操作
-
システム作成においておススメ...
-
●Excel VBAからSQLServerのデー...
-
メールを変数の中に入れたいの...
-
PHP 「mysql_connect」と「PEA...
-
Delphi でOracleのデータを表示...
-
VB2010 Dataset内のDB接続先変更
-
【Win7・64・C#】マイコンUSB通...
-
CGIとPHPは何をするもの?
-
【.NET】OracleConnection には...
おすすめ情報