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

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

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

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Java

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

SQL

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

Q&A

解決済

2回答

5864閲覧

JavaのResultSetについて

syncrock

総合スコア209

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Java

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

SQL

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

0グッド

0クリップ

投稿2016/04/20 04:50

現在JavaでODBC接続にてAccessに接続し、データを取得するようなロジックを作成しています。
eclipseで開発しております。
ロジックとしては以下のような感じです。

java

1sql = "SELECT 項目1, 項目2, 項目3 "; 2sql = sql + "FROM テストテーブル "; 3ResultSet rs = argStmt.executeQuery(sql); 4 5while(rs.next()) { 6 cnt = cnt + 1; 7 item1 = rs.getString("項目1"); 8}

このとき、rs.getString("項目1")で項目が取得されません。
デバッグをしてみると、「while(rs.next()) {」のところでは値が取得されています。
ですが、cnt = cnt + 1;のところに進めると評価出来ないとなり、「java.sql.SQLException: No data found」が発生します。
どこがおかしいか、もしくは何か考慮が漏れていないか教えて頂けないでしょうか。

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

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

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

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

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

guest

回答2

0

ベストアンサー

MSAccessの場合、ループの同一周回内で「rs.getString("項目1")」を複数回やってるとData not foundになりますが。

ロジックとしては以下のような感じ

かもしれませんが、記述されていないところに問題があるケースもあるので追記したほうがいいと思います。

投稿2016/04/20 05:03

tkturbo

総合スコア5572

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

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

syncrock

2016/04/20 05:22

回答ありがとうございます。 記述されていないところには問題ないかと思います。 要は、executeQuery実行、rs.next直後に取得しよとしてもエラーになる。ということです。 実際に、記載しているロジックの間に何も処理は記載しておらずそのままです。
KiyoshiMotoki

2016/04/20 05:32

横から失礼します。 > 記述されていないところには問題ないかと思います。 たいていの場合、そういう思い込みがハマる原因です。 だまされたと思って、問題のコードが記述されているメソッドを丸ごと、可能な限り改変せず質問欄に記載してみてください。 思わぬところの問題点を指摘してもらえるかもしれません。
syncrock

2016/04/20 05:34

解決いたしました。 結果として、eclipseの監視にちゃんと値が取れているか「rs.getString("項目1")」と記載していました。 それが原因で、そこで取得しているがためにおそらく実際のロジックのところでエラーになったんだと思います。 実際、監視のところの式を消すとうまくいきました。。。 おそらく、回答いただいた内容に関連することかと思いますので、ベストアンサーに選ばせて頂きます。
guest

0

こんにちは。

テーブル名および項目名が日本語なのが問題かも!?
こちらが参考になるかもしれません。

JDBC-ODBC-MDB(日本語テーブル・カラム名)アクセスで、ODBC -1305エラー

投稿2016/04/20 05:02

kaputaros

総合スコア1844

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

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

syncrock

2016/04/20 05:23

回答ありがとうございます。 実際に同じ感じで違うところ(違うプロジェクト)では取得出来ています。 ので、おそらく日本語なのが問題ではないかと思っているのですが。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問