初歩的な質問ですみません。
下記環境で、Javaを勉強しています。
教材 :やさしいJava 活用編 Lesson8 Sample5
実行環境:j2sdk1.4.1_07 (教材では、j2sdk-1_4_0)
Tomcat 5.0(教材では、Tomcat-3.2.3)
IE6.0
サーブレットでリクエストを受付け、JavaBean経由でDBに接続(Access2000を利用)しDBの中身をJSPで表示するいう流れです。サーブレットのURLを指定して実行してもjspページには何も表示されません。
ログファイルには下記エラーが記述されています。
勘違いか、何らかの初歩的なミスだと思いますが、解決方法が見つかりません。解決方法をご存知の方教えて下さい。よろしくお願いします。
尚、JDBC-ODBCドライバを使用していますが、サーブレットからではなくJavaアプリからではAccess2000のDB参照更新が出来ています。サーブレットから(JavaBean経由)だとうまくいかないという事象です。
java.sql.SQLException: [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3028)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at CarDB.CarDBBean.<init>(CarDBBean.java:22)
at Sample5.doGet(Sample5.java:16)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
~略~
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
#5の補足です。
ここでは、海外のサイトの内容などにより、Tomcat5のバグではないか、との安易な憶測をしてしまいましたが、もうちょこっとだけ調べ直してみたところ、どうやらそうではなさそうです。(Apache Software Foundationのみなさん、ごめんなさい。)
主な原因は、やっぱしURLにありそうです。(たぶん、Windowsプラットフォーム限定だと思われる。)
まず初めに、以下のサイトを御覧になってください。(ステータスは、「修正しないでしょう」で閉じています。)
[Bug ID]4093794
[Synopsis]JDBC-ODBC driver does not accept DSN-less connection URLs
http://bugs.sun.com/bugdatabase/view_bug.do?bug_ …
で、そこから派生するMicrosoftの公式サイト
http://support.microsoft.com/kb/q165866/
「DSNレス接続」に関する分かりやすい解説
http://www.geocities.co.jp/SiliconValley-PaloAlt …
以下のサイトもたまたま見付けましたので、開発ソフトは「Visual J#」ですが、質問者さんにはもう一度、データソース名がJavaソースコード内と一致しているのかどうか(スペースが前後にないか、もしくは入っているのかどうかなど)の確認をお願いします。
http://msdn2.microsoft.com/ja-jp/library/9bbt582 …
Javaで「DSNレス接続」をする方法については今も分かりませんが、もしかしたらデータベースのカテゴリ内で質問すれば、何かいい方法が見付かるかも知れません。
色々と有難うございます。
精鋭揃いのApache Software FoundationにあってTomcat5のこうした形でのバグは確かに考えにくいですね。
データソース名は再度確認しましたが問題ないという認識です。
MySQLで実験してみようとしていますが、ルートパスワードを忘れてしまいログインすらできず。そちらの対応にいま苦労しています。
DSNレス接続についても少し勉強してみます。
No.5
- 回答日時:
>もしOffice2000Proをお持ちでしたらAccessも同梱されていると思いますので、当該ソースでアクセス可能かどうか実験してみていただけませんでしょうか。
小生の自宅にあるOffice XPは、Accessが同梱されていないタイプです。(とほほ…。)ただ、[JavaHouse-Brewers:45130]のスレッド内では、Access2000にも接続できていたそうですので、RDBMS固有の問題ではなく、環境によっては出来るものもあれば、出来ないものもあるらしいとのことです。
その他にも、以下のサイトの過去ログ[1043]では、JDBC:ODBCのURL指定方法に問題があるのではないかという所まではきているのですが、そこで終っています。
http://www.hellohiro.com/bbs/7.html
国内のサイトでは、これが限界でしょう。なので、今度は海外へ飛びます。
まず最初は、公式サイトから。
http://forum.java.sun.com/thread.jspa?threadID=7 …
このサイトの一番下から2番目の回答の所では、jdk 1.5のregisterDriverメソッドを使えばいいと、書かれています。以下のサイトの3番目でも、Windowsのregistryに関する記述がありますが、信憑性については微妙です。
http://www.softwaretree.com/products/jdx/faq/trb …
他にも、こちらのサイトでは、最終的に質問者さん自身が次のように述べています。
http://www.thescripts.com/forum/thread18803.html
「The problem is not url, because it run on java class but not with jsp.
Probably the problem is a tomcat configuration or bug.」
実際に、以下のサイトでもTomcat 4.0までは正常に動いていたのに、Tomcat 5.0にアップグレードしてから急にデータベースに接続できなくなった、と言っています。
http://forum.java.sun.com/thread.jspa?threadID=5 …
以上を踏まえた上で、最終的には以下のような対応になるかと。
1jdk 1.5をインストールして、registerDriverメソッドを使ってみる。
2Tomcat 4の最新バージョンをインストールして、そちらからもデータベース接続できないか、試してみる。
3ACCESS2000をあきらめて、他のフリーRDBMS(MySQLやPostgreSQLなど)に乗り換えてみる。
No.4
- 回答日時:
NO1の者です。
あのあの、これも違うとおもうのですが一様。
DBの更新は出来るってことですよね??
SessionをつかってないからBeansが活かされてないのかな?って思うのですが・・ちがいますよね^^;
また考えてお答えしますね。
ご回答有難うございます。
Sessionを使うのはユーザを特定管理するためですよね。
それは実際はクッキーとしてWebブラウザに文字列を保存している事になるので、初回からアクセスできないというのはもっと根本的な原因かと思うのですが。。。
実験してみますね。
No.3
- 回答日時:
インフォシークのトップページにて、以下の一文をまるごとコピペして、検索。
すると、java-houseのサイトを発見できます。「データソース名および指定された既定のドライバが見つかりません。」
[JavaHouse-Brewers:33100]の一番下の方にあるスレッドからさらに、[JavaHouse-Brewers:27392]のスレッドが見付かります。これによると、ODBCのデータソース設定に起因しているそうです。
33100は、「Access97」で、27392の方は「SqlServer 6.5」とのことですが、エラーの内容がほぼ同じなのでこれじゃないかと思います。ただ、「Access2000」の方は使用したことがないので、動作未確認です。
それ以外で考えられることとしては、接続する際のユーザ名を指定していないことでしょうか?ここのサイトの過去ログでもよく出てきますが、ユーザ名を""にしていると最初の接続の時のみ、なかなかうまくいかないことがあります。(パスワードは何も指定していなければ、""でもOK。)私自身、Linux+MySQLにて、なかなか原因が分からず、苦労したことがあります。
質問者さんの場合は、引数が「usr」となっているので、そこに何か適当の文字列を設定してから、再度確認してみてください。(通常、Windowsでは、「admin」、Linuxでは「nobody」を使うことが多いです。)
ご回答有難うございます。
JavaHouse-Brewersの記事については当方でも確認し、
アクセス権限に問題があるのかを試してみました。
■データソースはユーザーデータソースに指定してもシステムデータソースに指定しても結果は同様(SQLExceptionの発生)でした。
■また、ユーザ名を""でなくAdministratorとしても結果は同様でした。
もしOffice2000Proをお持ちでしたらAccessも同梱されていると思いますので、当該ソースでアクセス可能かどうか実験してみていただけませんでしょうか。
依然原因が不明です。
No.2
- 回答日時:
>データ ソース名および指定された既定のドライバが見つかりません
とあるので、文字通りデータソース名が間違っているのでしょう。
ODBCの設定をして、Javaアプリからアクセスできているなら、データソースの設定自体はできているはずです。
それが見つからないなら、おそらく名前を打ち間違えていませんか?
>at CarDB.CarDBBean.<init>(CarDBBean.java:22)
この辺が怪しいです。JDBCDriverManager.getConnectionに渡している引数をチェックしてください。
ご回答いただきまして有難うございます。
CarDBBean.javaでは、次のように処理しています。
//接続の準備
String drv = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:CarDB";
String usr = "";
String pw = "";
//データベースへの接続
Class.forName(drv);
Connection cn = DriverManager.getConnection(url, usr, pw);
JavaアプリからはCarDB.mdbにアクセスできたので
引数には問題ないかと思うのですが・・・。
No.1
- 回答日時:
こんばんは^^
その本持ってないので何ともいえませんがもしかして??って思った事を書かせていただきますね。
アクセスもSQL文ですよね??
Connectionミス。
トムキャットが立ち上げってない。(再起動とか)
SQL構文ミス。
importでsql.*;しちゃったほうが・・してたらごめんなさい。
JSPがWeb-infに入ってる。
などだと思うのですが・・、全部やってるよ!って感じでしたらごめんなさい。
もう少し心当たり探ってみますね。
すいません。先日お礼の投稿をさせていただいたつもりでいたのですが、表示されていないようですので再度投稿いたします。
ご指摘いただいた点はいずれも問題ありませんでした。
TOMCATは正常に動いており、SQLも正しいと思います。
JSPの配置も問題ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaでWebページ作成 7 2023/07/21 21:09
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- Java Java です 途中は省いてますが for(int i = 0; i < 25; i ++) { s 4 2022/05/20 23:36
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C#の基本文法が詳しく書かれている教科書的な本ありますか 2 2023/02/11 03:48
- Java mac mini 2009 でのmac OS における Java の入れ替えについて 1 2022/12/27 19:23
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- IT・エンジニアリング プログラマの仕事内容 4 2022/08/13 00:34
- その他(ゲーム) マインクラフトJAVA版の導入・ローカルマルチプレイについて 1 2022/03/23 18:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaでのエラーについて
-
CLASSPATHを設定しても、『Clas...
-
log4jを使用し、JAVAのバッチプ...
-
struts2環境構築で不具合が出て...
-
javaからデータベースに接続 エ...
-
JAVA実行時エラーについて教え...
-
対応方法を教えてください。
-
マイクラ Ender IO 入れたらク...
-
AntでのJunitの試験
-
-Applet表示でのjava.lang.Clas...
-
Eclipseソース開発画面の行番号...
-
エクリプスのプログラミングに...
-
vba クリップボードクリアにつ...
-
gitでバージョン指定してダウン...
-
IISワーカープロセスが原因でCP...
-
JSPファイルで生じるエラーをど...
-
データベースのデータをTextBox...
-
wed業界に詳しい方教えてくださ...
-
Javaでの三目並べのソースコード
-
質問です。 Java言語を勉強出来...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java と javax の違いは?
-
Javaでのエラーについて
-
propertiesが読み込めなくてnul...
-
CLASSPATHを設定しても、『Clas...
-
javaからデータベースに接続 エ...
-
struts2環境構築で不具合が出て...
-
JasperExceptionのエラーログの...
-
マイクラ1.7.10にcutallなどが...
-
JAVA実行時エラーについて教え...
-
-Applet表示でのjava.lang.Clas...
-
Servletから呼ぶ外部コマンドの...
-
JDBC-ODBC-MDB(日本語テーブル...
-
EclipseのJDBCドライバーについて
-
JUNITについて
-
マイクラ Ender IO 入れたらク...
-
$_SERVER['HTTP_USER_AGENT'] ...
-
log4jを使用し、JAVAのバッチプ...
-
JavaMail関係でエラーが出ます
-
javaのGUIツールキット
-
JavaMailでのメール送信
おすすめ情報