[pgsql-jp: 28262] postgresqlとの接続エラー
Takeuchi
takeu-al @ tf6.so-net.ne.jp
2002年 12月 11日 (水) 19:21:37 JST
takeuchi と申します。
「PostgreSQLの接続エラー」について質問させて下さい。
環境は以下の通りです。
OS:Vine Linux 2.5
Webサーバ:Apache1.3.26
サーブレット:Tomcat4.0
JDK:JDK1.4
PostgreSQL起動後
http://localhost/examples/servlets/showform2.html
のフォームからBookmark2.java
のサーブレットを呼び出すと以下のようなエラーがでました。
java.lang.NullPointerException
at Bookmark2.doPost(Bookmark2.java:61)
NullPointerExceptionという事で
con = DriverManager.getConnection(urlname,user,pwd);
がnull であるはずなのです。しかし、その次の文が
if (con == null) {
show(req,resp,"error",null);
return;
を通過している点をみると、この時点で
con == null
ではないのかなと感じてしまいます。
私自身、見落としている点があると思いますので
どなたか気づいた点が御座いましたらご教授お願い致します。
java.lang.NullPointerException
at Bookmark2.doPost(Bookmark2.java:61)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
at filters.ExampleFilter.doFilter(ExampleFilter.java:149)
------------Bookmark2.java-------------------
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
public class Bookmark2 extends HttpServlet {
Connection con = null;
String html_header = "<!doctype html public \"-//w3c//dtd html 4.0
transitional//en\">\n"
+ "<html>\n<head>\n"
+ "<title>Interest Servlet</title>\n"
+ "</head>\n"
+ "<body>\n";
String html_footer = "</body>\n</html>\n";
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException,IOException {
String memberid = req.getParameter("memberid");
String password = req.getParameter("password");
String urlname = "jdbc:postgresql://localhost/bookmark";
String user = "take";
String pwd = "";
try {
// ドライバクラスをロード
Class.forName("postgresql.Driver"); // PostgreSQLの場合
// データベースへ接続
con = DriverManager.getConnection(urlname,user,pwd);
if (con == null) {
show(req,resp,"error",null);
return;
}
}catch ( ClassNotFoundException e) {
e.printStackTrace();
} // end of catch
catch ( SQLException e) {
e.printStackTrace();
} // end of catch
resp.setContentType("text/html; charset=EUC-JP");
PrintWriter pw = resp.getWriter();
file://ヘッダーの出力
pw.println(html_header);
String searchword = req.getParameter("searchword");
System.out.println(searchword);
pw.println("<table>");
// ステートメントオブジェクトを生成
try {
Statement stmt = con.createStatement(); #61行目
String sql = "SELECT * FROM bookmark4 " + "WHERE keyword = " + "'" +
searchword + "'" + ";";
System.out.println(sql);
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);
// 検索された行数分ループ
while(rs.next()){
// directoryを取得
String directory = rs.getString("directory");
// URLを取得
String url = rs.getString("URL");
// キーワードを取得
String keyword = rs.getString("keyword");
// 表示
pw.println("<tr>");
pw.println("<td>" + directory + "</td>");
pw.println("<td>" + url + "</td>");
pw.println("<td>" + keyword + "</td>");
pw.println("</tr>");
}
// データベースから切断
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
pw.println("</table>");
pw.println(html_footer);
}
private void show(HttpServletRequest req, HttpServletResponse resp,String
msg,String flg) {
{
resp.setContentType("text/html; charset=EUC-JP");
PrintWriter pw = resp.getWriter();
file://ヘッダーの出力
pw.println(html_header);
System.out.println(msg);
pw.println(html_footer);}catch (Exception e) {
e.printStackTrace();
}
}
}
pgsql-jp メーリングリストの案内