0

次の Java クラスがあります。

package web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;


public class HelloWorld extends HttpServlet {
 public void doPost(HttpServletRequest request,HttpServletResponse response)throws   IOException, ServletException {
   response.setContentType("text/html");
   PrintWriter out = response.getWriter();
   out.println("Student Name<br>");


 try{  
   Connection conn=null;
       String url = "jdbc:mysql://localhost/test";
       PreparedStatement pre=null;

       Class.forName("com.mysql.jdbc.Driver").newInstance();
       conn=DriverManager.getConnection(url,"root","3324911");
       out.println("Database connected");
       pre = conn.prepareStatement("Insert INTO countries(COUNTRY,COUNTRY_ISO_CODE,REGION) VALUES (?,?,?)");
       pre.setString(1,"USA");
       pre.setString(2,"US");
       pre.setString(3,"North America");
       pre.executeUpdate();

   }catch (Exception e){//Catch exception if any
       System.err.println("Error: " + e.getMessage());
  }
 }
}

何らかの理由で、このクラスを Tomcat にデプロイした後、プログラムは次の行にしか到達できませんでした

  Class.forName("com.mysql.jdbc.Driver").newInstance();

次の行に到達すると失敗します。

  conn=DriverManager.getConnection(url,"root","3324911");

この try/catch ブロックは別のメソッドとして機能しています。別のクラスのメイン メソッドから取得しましたが、正しく機能しています。

この try/catch ブロックを Tomcat に接続すると、どこで失敗したのかわかりません。

どんな助けでも大歓迎です、ありがとう!

4

4 に答える 4

1

JDBC ドライバーはパスで構成されていますか、または lib ディレクトリ (つまり、$CATALINA_HOME/lib または web-inf/lib) にコピーされていますか?

また、接続プールを使用する方がよいでしょう。Tomcat には、独自の DB 接続を生成するよりも優れたアプローチである接続プールが付属しています。

また、DB 関連のリソースをクリーンアップした方がよい場合もあります (簡単にするために上記のコードから省略した場合を除きます)。

お役に立てれば。

はい、他の回答者の意見に同意します。より詳細なエラー ログを取得することが推奨される方法かもしれません。

于 2012-08-12T15:42:11.860 に答える
0

おそらく、Tomcat ログ フォルダに移動して、stand-err ログ ファイルを探します。

于 2012-08-12T15:04:14.547 に答える
0

コードを変更してください。

    Class.forName("com.mysql.jdbc.Driver").newInstance();

   Class.forName("com.mysql.jdbc.Driver");
于 2012-08-13T04:39:06.877 に答える
0

System.err.println を使用する代わりに、e.printStackTrace() を使用してください。エラー ストリームはバッファリングされるため、フラッシュされる可能性はありません。printStacktrace を使用すると、例外の詳細が確実に表示されます。

于 2012-08-12T13:39:41.107 に答える