質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

4回答

8834閲覧

Javaからキーワード検索をした時にデータがなかった場合、「データはありません」と表示させたいのですがどうすればいいですか。

sarasa7

総合スコア13

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2015/07/14 13:12

javaからデータ検索をする際に、入力したキーワードで検索をした時にデータがなかった場合、「データはありません」とコンソールに表示させたいのですが、どうすればよろしいでしょうか。
コードは下記の通りです。

public void indicate () { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine() try{ Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = XXXX)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = oracle)))"; String user = "hr"; String pass = "hr"; Connection con = DriverManager.getConnection(url, user, pass); Statement stmt = con.createStatement(); ResultSet rset = stmt.executeQuery ("select * from EMP where 商品名 like" + "%" + str + "%"); while (rset.next()) { System.out.println( rset.getInt("ID") + "\t" + rset.getString("商品名") + "\t" + rset.getString("製作者") + "\t" + rset.getString("会社名") + "\t" + rset.getDate("発売日") + "\t" + rset.getInt("値段")); } rset.close(); stmt.close(); con.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }

使っているツールはeclipseです。
分かりづらくてすみません。
どなたかお分かりになる方がいらっしゃいましたら教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

do whileを使って以下の様にすれば良いと思います。

lang

1 if(rset.next() == false )) { 2 System.out.println("データはありません"); 3 } else { 4 do { 5 System.out.println( 6 rset.getInt("ID") + "\t" 7 + rset.getString("商品名") + "\t" 8 + rset.getString("製作者") + "\t" 9 + rset.getString("会社名") + "\t" 10 + rset.getDate("発売日") + "\t" 11 + rset.getInt("値段")); 12 } while (rset.next()) ; 13 } 14

投稿2015/07/14 14:38

編集2015/07/27 22:13
eripong

総合スコア1546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

eripong

2015/07/14 14:41

すみません。 記憶違いです。ResultSet#hasNextはありませんでした。
eripong

2015/07/14 14:49

別の方法に訂正しました。
sarasa7

2015/07/27 16:09

無事に動きました。ありがとうございます。
guest

0

直感的ではないかも知れませんが、意味的にはこれでも良いと思います。

lang

1boolean found = false; 2while (rset.next()) { 3 found = true; 4 // 他の処理 5} 6if (!found) { 7 System.out.println("データはありません"); 8}

投稿2015/07/14 14:52

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sarasa7

2015/07/27 16:15

そのようなやり方もあるのですね。ありがとうございます。今後の参考にさせて頂きます。
guest

0

参考情報

投稿2015/07/14 22:07

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sarasa7

2015/07/27 16:10

参考にさせて頂きました。ありがとうございます。
guest

0

Statement の getFetchSize() で検索した件数が取れているはずです :D

lang

1if (stmt.getFetchSize() == 0) { 2 System.out.println("データはありません"); 3}

参考: Statement (Java Platform SE 7 )

-- 追記
getFetchSize() で検索した件数は取得できないようです。
別の値が取得できてしまうため、参考にしないようお願いします。

投稿2015/07/14 13:21

編集2015/07/14 15:08
ryunix

総合スコア1656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argius

2015/07/14 13:52

getFetchSizeは、一度に取ってくる件数の設定だったと思います。 手元の11gExで試したところ、ヒット件数にかかわらず(おそらくデフォルトの)10が返ってきました。
ryunix

2015/07/14 14:12

ご指摘ありがとうございます :) Statement で取れた気がしたのですが、気のせいでしたか... (取得できるのは executeUpdate だけ?) Javadoc にはフェッチサイズを指定してない場合に実装固有になると書いてありますね。 PreparedStatement も同じですかね?
argius

2015/07/14 14:48

PreparedStatementも同じですね。 executeUpdateは更新件数が取得できます。そちらは何度も確認したことがあるので間違いないです。
ryunix

2015/07/14 14:52

確認いただき、ありがとうございます。 executeUpdate と混同してしまっていたようです orz
argius

2015/07/14 14:54

ドンマイです! :-)
ryunix

2015/07/14 15:00

>eripongさん そうみたいですね... ありがとうございます :) >argiusさん ちゃんと動確しないとダメですね、ありがとうございます orz
sarasa7

2015/07/27 16:16

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問