|
データベースに接続できない
下記環境で、Javaを勉強しています。 教材 :やさしいJava 活用編 第3版 Lesson8 Sample1 実行環境:jdk1.7.0_01 Tomcat 7.0 IE8.0 データベースはJava付属のJavaDBを使用 以下のコードを打ち込みコンパイルと実行をしたところ ----------------------------------------------------------------------------------- import java.sql.*; //P242 public class k0821 { public static void main(String[] args) { try { //接続の準備 String url = "jdbc:derby:cardb;create=true"; String usr = ""; String pw = ""; //データベースへの接続 Connection cn = DriverManager.getConnection(url, usr, pw); //問い合わせの準備 DatabaseMetaData dm = cn.getMetaData(); ResultSet tb = dm.getTables(null, null, "車表", null); Statement st = cn.createStatement(); String qry1 = "CREATE TABLE 車表(番号 int, 名前 varchar(50))"; String[] qry2 = { "INSERT INTO 車表 VALUES (2, '乗用車')", "INSERT INTO 車表 VALUES (3, 'オープンカー')", "INSERT INTO 車表 VALUES (4, 'トラック')"}; String qry3 = "SELECT * FROM 車表"; if(!tb.next()) { st.executeUpdate(qry1); for(int i=0; i<qry2.length; i++) { st.executeUpdate(qry2[i]); } } //問い合わせ ResultSet rs = st.executeQuery(qry3); //データの取得 ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); while(rs.next()) { for(int i=1; i<=cnum; i++) { System.out.print(rm.getColumnName(i) + ":" + rs.getObject(i) + " "); } System.out.print(""); } //接続のクローズ rs.close(); st.close(); cn.close(); } catch(Exception e) { e.printStackTrace(); } } } ----------------------------------------------------------------------------------- コマンドプロンプト上に以下の表示が出ました。 C:\Program Files\Apache Software Foundation\Tomcat 7.0ses>java k0821 java.sql.SQLException: No suitable driver found for jd at java.sql.DriverManager.getConnection(Driver at java.sql.DriverManager.getConnection(Driver at k0821.main(k0821.
|

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア








私が試して上手く行った方法です。長くなるので私のブログに書きました。
よければ試してみてください。
http://d.hatena.ne.jp/nara_reimei/20120322/1332421173
2012/3/22(木) 午後 10:08 [ nara_reimei ]
いろいろ調べていただき感謝しています。
今専門学校に通ってるのですが、3月30日の卒業までに
卒業制作を作って提出しなければならず、大変な日々を送っています。
すべてが手いっぱいの状態です。
Tomcat もうまく作動しないし、MySQL も設定が必要だし
Eclipse も使い始めたばかりだし、
GoogleAppEngine に至っては、Eclipse のバージョンが古いものを指定されてたりそもそもJava用のアプリのインストールがうまくいきません。ダウンロードはしたのですが、どの拡張子のファイルをクリックしたらインストールが始まるかがわかりません。
就職先も探しつつですので、本当はそれが一番の気がかりです。
2012/3/27(火) 午前 5:27 [ diogenes ]
こんにちは。なかなか大変な状況ですね。
GAEまで使ってちょっと盛り込み過ぎな気がしなくもありませんが・・・
今後IT企業に就職してシステム開発をするようになると、日々ひたすら問題解決だと気づかれると思います。今の大変な状況はきっといい勉強になるはずです。求められている成果を出すのも大切ですが、この問題にどう取り組むかが大切です。がんばって乗り越えてください。応援しています。
2012/3/28(水) 午前 4:51 [ nara_reimei ]
eclipseを使用しない場合、lib内のクラスパスを全指定しコンパイル、実行しないといけないのかね...面倒だね...
2012/12/9(日) 午前 11:55 [ どんべい ]
-classpath "全指定;." カレントも忘れないようにしないとね...
2012/12/9(日) 午後 0:05 [ どんべい ]
だれかが参考になればさ...
2012/12/9(日) 午後 0:07 [ どんべい ]
mim**aroman さん
大変参考になります。
ありがとうございます。
将来ここを訪れる方にも有益なアドバイスとなることでしょう。
2012/12/17(月) 午後 9:46 [ diogenes ]
pockyです。!!!
たいへんお困りの様子ですね。
私もWindows7環境で、同じような現象で悩んだことがあります。
ほとんどあなたと同じ状況だと思いますのでコメントさせて頂きます。
私の場合、GlassFishサーバーからJavaDBへの接続ができなくなってしまったことからでした。
原因は他のデーターベースのドライバでした。
エラースタックトレースから、MySQLのドライバで引っ掛かっているようなので、回避策として、
環境変数とJRE、JDK両方のライブラリフォルダにコピーしてあったMySQLのドライバを削除して、
クラスパス設定から完全に隔離してしまえば良いことに気づきました。
こうすることで、Derbyのサーバー起動を拒否していたのが、ポート1527 で接続できるようになりました。
いろんなソフトをインストールしていると、知らない所で影響を受けているということです。
少しは、参考になりましたでしょうか。
2013/3/13(水) 午前 5:21 [ pocky ]
再び、pockyです
もうお解りになったと思いまが、復習の意味でお読みください。
tumura999さんが説明されていたように、Javaのプログラムでデーターベースドライバを
読み込む場合、JRE(JDKではありません。)のlib/extフォルダにドライバをコピーして
読み込ませる必要があります。
それでもうまくいかない場合は、CLASSPATH環境変数にセットすると完璧でしょう。
ただ問題は、他のドライバと相性が悪い場合は、設定を変えるか、どちらかを切り捨てる
必要が出てくる事があります。
Javaのクラスローダの仕組みは意外と盲点なので、よく覚えておいてください。
2013/3/13(水) 午後 0:27 [ pocky ]
pockyさん
アドバイスありがとうございます
ドライバーが原因だったのですか。
前にもそんなことがありました。
あの時はYahooMesengerがインストールできないというトラブルでしたが。
有益なご指摘感謝します。
2013/3/18(月) 午後 2:12 [ diogenes ]