みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

データベースへの接続で困ってます

JSPを関連させてcom.mysql.jdbc.Driverというドライバでデータベースに接続したいのですが、エラーが出てしまってどうすればいいかお手上げ状態になっています。プログラムを貼るので、何かおかしいとこがありましたら教えてもらいたいです。よろしくお願いします。

/*プログラム*/
<%@ page import="java.sql.*" %>
<html>
<head>
<title>データを表示する</title>
</head>
<body>
<%

//データベースに接続する
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/sqldb?useUnicode=true&characterEncoding=SJIS";
String user = "matsuzaki";
String password = "matsuzaki";

Connection conn = DriverManager.getConnection(url, user, password);

//データを取得する
Statement st = conn.createStatement();
String sql = "SELECT * FROM cd"; //実行するSQL
ResultSet rs = st.executeQuery(sql);

//データを全件表示する
out.println("<table border=1>");
while(rs.next()){
out.println("<tr>");
out.println("<td>" + rs.getInt("name") + "</td>");
out.println("<td>" + rs.getString("artist") + "</td>");
out.println("<td>" + rs.getInt("price") + "</td>");
out.println("</tr>");
}
out.println("</table>");

//データベース接続を閉じる
conn.close();
%>
</body>
</html>

投稿日時 - 2005-07-14 16:59:01

QNo.1513343

すぐに回答ほしいです

質問者が選んだベストアンサー

作成したデータベースの名前は「sqldb」ですよね?
そんでもってテーブル名がcdですよね?
データベースのuserとpasswordが間違ってなければ列名やデータ型は?
とりあえずmacchakiさんのソースを確認して見ましたが問題なく動きました。(一部自分のやりやすいように修正)
以上の事が間違ってなければ動くはずです。

多分データベースの設定とか間違ってると思うけど…
一応私のソースを載せますのでコピペで試したり参考にしてみて下さい。

<%@ page import="java.sql.*" %>
<html>
<head>
<title>データを表示する</title>
</head>
<body>
<%

//データベースに接続する
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/testdb?useUnicode=true&characterEncoding=Windows-31J";
String user = "root";
String password = "";

Connection conn = DriverManager.getConnection(url, user, password);

//データを取得する
Statement st = conn.createStatement();
String sql = "select * from test order by number"; //実行するSQL
ResultSet rs = st.executeQuery(sql);

//データを全件表示する
out.println("<table border=1>");
while(rs.next()){
out.println("<tr>");
out.println("<td>" + rs.getInt("number") + "</td>");
out.println("<td>" + rs.getString("pass") + "</td>");
out.println("<td>" + rs.getInt("root") + "</td>");
out.println("</tr>");
}
out.println("</table>");

//データベース接続を閉じる
conn.close();
%>
</body>
</html>

投稿日時 - 2005-07-20 01:36:19

補足

javax.servlet.ServletException: com.mysql.jdbc.Driver
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
at org.apache.jsp.b$jsp._jspService(b$jsp.java:96)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
at java.lang.Thread.run(Thread.java:534)
というエラーが消えません。。。

投稿日時 - 2005-07-25 16:10:03

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

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

回答(2)

ANo.2

一応データベースを一から作成して下さい。

MySQLを起動して…
「mysqladmin create testdb」と、データベースを作成して…
「mysql testdb」で作ったtestdbデータベース内に移動。
「create table test(
 number int primary key,
 pass varchar(20),
 root int);」っと入力してtestと言う名のテーブルを作り列名とデータ型を決定。
「insert into test values (1,'aaaaa',1);」と値を格納。
「select * from test order by number」と実行して試してみる。

これでMySQLの方はOK!ちなみに権限は自分の環境に合わせて下さい。
そんでもって…、MySQLが起動している状態でさっきのJSPを試して見ましょう。
ソースの方は問題ないと思うのでDBの再チェックから初めましょうね☆

それでは頑張って下さい!

投稿日時 - 2005-07-20 01:46:30

お礼

いろいろ試してみたところ、
プログラムが間違っていたのではなく、
mysql-connector-java-3.0.8-stable-bin.jarという
ファイルを間違っておいていたためにエラーが生じていたことがわかりました。
親身になって2度も説明していただきありがとうございました。

投稿日時 - 2005-07-25 18:22:04