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