[pgsql-jp: 28308] Re: postgresqlとの接続エラー

Takeuchi takeu-al @ tf6.so-net.ne.jp
2002年 12月 13日 (金) 22:22:38 JST


takeuchi です。

引き続き、postgresqlとの接続エラーで困っております。

program1ではうまくいく。よってドライバのロードエラーではないと思っていたら
program2 では
DataBase Connect Failed ClassNotFoundException
とエラーがでる。

program3ではNullPointerException が発生しているようです。

いったい、 ドライバのロードエラーなのかDBコネクションの接続エラー
なのかどちらかよくわかりません。
エラーを特定するいい方法が御座いましたらご教授お願いいたします。

-----------program1----------------------

import java.sql.*;

class PostgreSQLTest {
  public static void main (String[] args) {
    try {
        Class.forName("org.postgresql.Driver");

      String     url = "jdbc:postgresql:javatest";
      Connection con = DriverManager.getConnection(url, "postgres",
"");
      Statement  stm = con.createStatement();

      stm.setQueryTimeout(10);
      ResultSet  rs  = stm.executeQuery("select col1 from test");

      rs.next();

      System.out.println(rs.getString(1));

    } catch (SQLException e)


      System.out.println("Exception!");
      System.out.println(e.toString());
  }
}

-----------program2----------------------
import java.io.*;
import java.sql.*;

import javax.servlet.http.*;
import javax.servlet.*;

public class DbConnect extends HttpServlet{
 public void service(HttpServletRequest req, HttpServletResponse res) throws
ServletException,IOException{
  PrintWriter out = new PrintWriter(res.getOutputStream());
  res.setContentType("text/html; char-set=iso-2022-jp");

  out.println("<html>");
  out.println("<head><title>MailMagazine Sample Program</title></head>");
  out.println("<body>");

  Connection con = null;
  String rtn_msg = "";
  String err = "";

  file://Connect database
  try{
   Class.forName("org.postgresql.Driver");

   String url = "jdbc:postgresql:template1";
   String user = "postgres";
   String pwd = "";

   con = DriverManager.getConnection(url, user, pwd);
   rtn_msg = "DataBase Connect OK";
  }catch(Exception e){
   rtn_msg = "DataBase Connect Failed : " + e;
  }

  out.println(rtn_msg);

  file://Disconnect database
  try{
   if(con != null){
    con.close();
   }
  }catch(Exception e){
   err = err + e;
  }

  if(!(err.equals(""))){
   out.println(err);
  }
  out.println("</body>");
  out.println("</html>");
  out.close();
 }
}
-----------program3----------------------

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 = "";
        String rtn_msg = "";

        try {
          // ドライバクラスをロード
          Class.forName("org.postgresql.Driver"); // PostgreSQLの場合

          // データベースへ接続
          con = DriverManager.getConnection(urlname,user,pwd);
          rtn_msg = "DataBase Connect OK";
          if (con == null) {
        System.out.println("error");
       show(req,resp,"error",null);
       return;
          }
          }catch ( ClassNotFoundException e) {
       rtn_msg = "DataBase Connect Failed : " + e;
       System.out.println(rtn_msg);

      } // 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();
      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 メーリングリストの案内