- PR -

JDBCを教えてください。

1
投稿者投稿内容
マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-23 17:53
現在javaを参考書を用いて学習をしているのですが、
参考書どおりしてもうまくいかないところがありましたので投稿しました。

MYSQLを(ユーザー名、PASS設定なしで)インストールし、JDBCドライバセットアップ及びMYSQLの起動を確認後、テキストエディタにSample1.javaという名前で

import java.sql.*;

public class Sample1
{
public static void main(String args[])
{
try{
//接続の準備
String drv = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql:///cardb";
String usr = "";
String pw = "";

//データベースの接続
Class.forName(drv);
Connection cn
= DriverManager.getConnection(url, usr, pw);

//問い合わせの準備
Statement st = cn.createStatement();
String qry = "SELECT * FROM car_table";

//問い合わせ
ResultSet rs = st.executeQuery(qry);

//データの取得
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.println("");
}
//接続のクローズ
rs.close();
st.close();
cn.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}

と記述してコンパイルした後、アプリケーションを実行すると、
下記のエラーが表示されます。

C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\YJKSample06\WEB-I
NF\classes>java Sample1
java.sql.SQLException: Unknown database 'cardb'
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:770)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3641)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1175)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2544)
at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:264)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at Sample1.main(Sample1.java:16)


どこから手をつけてよいのかも解からず、お手上げ状態です。
対処方法をご存知の方がいらっしゃいましたら、よろしくお願いします。


山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-05-23 18:08
これとか?
http://tinyurl.com/2dx3zu
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-23 18:34
DBが不可視
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-23 19:45
どこから手をつけたらって・・・わかりきったことを・・・・

java.sql.SQLException: Unknown database 'cardb'
java.sql.SQLException: 不明な データベース 'cardb'

例外の1行目は原因を探るのに一番いいです。
例外の場合は例外の意味、messageの意味を理解するといいですよ。
マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-24 04:09
インギさんこんばんわ。
返信遅くなりましてすいません。

インギさんのURL http://tinyurl.com/2dx3zuのなかで
mysql> statusコマンドでステータスを調べてみると、Current user: root@localhostと記述されていたので、Sample1.javaのコードの中の、
String usr = "";を
String usr = "root";に変更したところ、初回投稿時のエラー内容と
変わらず、解決できませんでした。
ここでは、ユーザー名・PASS等の指定は関係ないみたいです。



マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-24 04:39
杏さんこんばんわ。
返信遅れまして、すいません。

Unknown database 'cardb' のメッセージの意味について、
cardbという名のデータベースが不明 = ファイル自体見つからないという意味
と解釈し、考えた結果、無事解決しました!

mysqlコマンドでデータベース"cardb"を作成時した際に、ibdata1という名のファイル
(10Mほどの容量)が作成されていたことに気づいていませんでした。(涙)
この、ibdata1ファイルを作業中のディレクトリにコピーすることで、上手くいきました。
できないときは、"messageの意味を理解する"ですね!!!
勉強になりました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)