SMART SPACE

ハイブラウ&ハイセンス

000Java

[ リスト ]

データベースに接続できない
下記環境で、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://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=138...
です。
  • 質問日時:
    2012/3/13 11:29:32
  • 残り時間:
    7日間
  • 補足日時:
    2012/3/13 11:40:53
  • 回答数:
    1
  • お礼:
    知恵コイン
    50枚
    閲覧数:
    20

    回答

    (1件中1〜1件)
     
    tumura999さん
    そのエラーメッセージを見る限り、jdbcドライバーが見つかっていませんね。
    derby用のjdbcドライバ(jarファイル)をjavaのclasspassに追加する必要があります。
    一番簡単なやり方は、javaインストール先のjreフォルダの下のlib/extフォルダに、
    derby.jarとderbytools.jarとderbytools.jarをコピーして置いておく、というのがあります。
     
     
     
     
     
     
     
    データベースに接続できない(つづき)
    http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=128...
    の続きです


    コマンドプロンプト上に以下の表示が出ました。

    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.java:16)
    -- Press any key to exit (Input "c" to continue) --

    -----------------------------------------------------------------------------------
    この後どうして解決したらいいかがわかりません。

    ここまでにP470記載の指示のとおり CLASSPATH を

    C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\servlet-api.jar;
    C:\Program Files\Java\jdk1.7.0_01\lib\derby.jar;.

    に通し、Tomcat で共通して使うファイルを、
    Tomcat をインストールしたディレクトリの下の lib フォルダに配置せよ とあったので、

    C:\Program Files\Java\jdk1.7.0_01\db\lib
    の中の derby.jar を
    C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib
     
     
     
     
     
    tumura999さん
    Javaで実行するのですから、tomcatのlibパスに入れても意味がありません。
    実行するjavaのlibパスにコピーする必要があります。
    具体的には、上記でしたら
    C:\Program Files\Java\jre7\lib\ext
    の下に、
    C:\Program Files\Java\jdk1.7.0_01\db\lib
    の下の全てのjarファイルをコピーしてください。
    derbyの実行にはderby.jarだけでなく、derbytools.jarも必要だったと記憶しています。

    にコピーして置きました。

閉じる コメント(10)

顔アイコン

私が試して上手く行った方法です。長くなるので私のブログに書きました。
よければ試してみてください。

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 ]


.

過去の記事一覧

diogenes
diogenes
男性 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について

よしもとブログランキング

もっと見る

[PR]お得情報

お肉、魚介、お米、おせちまで
おすすめ特産品がランキングで選べる
ふるさと納税サイト『さとふる』
コンタクトレンズで遠近両用?
「2WEEKメニコンプレミオ遠近両用」
無料モニター募集中!
いまならもらえる!ウィスパーWガード
薄いしモレを防ぐパンティライナー
話題の新製品を10,000名様にプレゼント
いまならもらえる!ウィスパーうすさら
薄いしモレを防ぐ尿ケアパッド
話題の新製品を10,000名様にプレゼント
ふるさと納税サイト『さとふる』
11/30まで5周年記念キャンペーン中!
Amazonギフト券1000円分当たる!

その他のキャンペーン


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事