[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 メーリングリストの案内