こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

データベースへのアクセスエラーについて

はじめまして!大学でデータベースを学んでいるのですが、以下のプログラムを実行した際、「式の型が一致しません」というエラーが出ます。またアクセスしているテーブルmeiboにはフィールドに,IDと名前shakai,eigoなどのテーブルには,IDと得点(それぞれの科目の名前)がフィールドにあります。
よろしければ、ご回答よろしくお願いいたします。

import java.io.*;
import java.sql.*;

public class Ex1 {
public static void main(String[] args) {
Connection conn = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:ex1");
Statement stmt = conn.createStatement();
BufferedReader r =
new BufferedReader(new InputStreamReader(System.in), 1);
System.out.print("学籍番号を入力してください : ");
System.out.flush();

String number = r.readLine();

String select = "SELECT * from meibo,kokugo,sansuu,shakai,rika,eigo " +
"where meibo.ID=kokugo.ID=sansuu.ID=shakai.ID=rika.ID=eigo.ID";

ResultSet rs = stmt.executeQuery(select);


while(rs.getString("ID")!=number)
rs.next();

// System.out.printf("%s\t",rs.getString("name"));
System.out.printf("%s\t"," 国語 "+rs.getString("kokugo"));
System.out.printf("%s\t"," 算数 "+rs.getString("sansuu"));
System.out.printf("%s\t"," 社会 "+rs.getString("shakai"));
System.out.printf("%s\t"," 理科 "+rs.getString("rika"));
System.out.printf("%s\n"," 英語 "+rs.getString("eigo"));

stmt.close();
conn.close();

} catch (Exception e) {
System.out.println(e);
}

}
}

投稿日時 - 2008-10-02 17:41:14

QNo.4372598

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

データベースは何をお使いなのでしょう。
Javaプログラムで実行する前に、
SQLの妥当性を確認した方がよろしいと思います。
特に
「where meibo.ID=kokugo.ID=sansuu.ID=shakai.ID=rika.ID=eigo.ID」
この条件の書き方で、実行できるのかがあやしいと思うのですが。
普通は
「where
meibo.ID=kokugo.ID and
meibo.ID=sansuu.ID and
meibo.ID=shakai.ID and
meibo.ID=rika.ID and
meibo.ID=eigo.ID and」
と書くと思うのですが、
固有のデータベースアプリではありえる書き方なんでしょうかね?

投稿日時 - 2008-10-03 15:00:43

ANo.4

3カ所か4カ所なにかしら後の方は自動ミスのよう

投稿日時 - 2008-10-02 20:27:16

ANo.3

そのSQL実行できるんですよね?

で、
String number = r.readLine();

ここで入力された値をwhere句に条件に入れて。

実行結果のrs !=null なら結果ありと判断すればいいんじゃないかと・・・

投稿日時 - 2008-10-02 19:07:43

ANo.2

SQL文が明らかにおかしいです。

投稿日時 - 2008-10-02 18:15:56

補足

ご回答ありがとうございます。

SQL変更しました。
String select = "SELECT meibo.*,kokugo.kokugo,sansuu.sansuu,shakai.shakai,rika.rika,eigo.eigo" + " from meibo,kokugo,sansuu,shakai,rika,eigo " + "where meibo.ID=kokugo.ID=sansuu.ID=shakai.ID=rika.ID=eigo.ID";

投稿日時 - 2008-10-02 18:29:03

ANo.1

どこでひっかかってるのかわからないですが、
とりあえず while の String 比較が比較になっていないような。

参考URL:http://www.nextindex.net/java/equals.html

投稿日時 - 2008-10-02 18:03:58

補足

早急なご回答ありがとうございます。

ResultSet rs = stmt.executeQuery(select);の文の前後にprintfで適当な文字を出力させようとすると,ResultSetの前に書いたprintfの内容は出力されたのですが、後に書いたものは出力されませんでした。

投稿日時 - 2008-10-02 18:08:59

あなたにオススメの質問