2012-08-12 3 views
0

나는 다음과 같은 자바 클래스가 : 나는 톰캣에서이 클래스를 배포 한 후, 프로그램은 라인JDBC 연결에 문제가있을 수 있습니까?

Class.forName("com.mysql.jdbc.Driver").newInstance(); 
에 도달 할 수, 어떤 이유를 들어

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()); 
    } 
} 
} 

이 줄을 도착 후 그것은 실패 :

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

이 try/catch 블록은 별도의 방법으로 작동하고, 나는 다른 클래스에서 main 메소드에서했다, 그것은 제대로 작동합니다.

나는이 try/catch 블록을 여기 Tomcat에 꽂을 때 어디에 엉망인 지 잘 모르겠습니다.

도움 주시면 감사하겠습니다.

+0

어떤 오류에

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

이 생산된다? 스택 추적을 게시 할 수 있습니까? – Reimeus

+0

사실 당신은 내가 out.println ("데이터베이스 연결됨")을 가지고 있음을 볼 수 있습니다; 이 클래스는 Class.forName() 이후 만 표시되지만 "DriverManager.getConnection"이후에는 표시되지 않습니다. – Kevin

+0

사용자 이름과 비밀번호가 맞습니까? – JamesB

답변

1

는 lib 디렉토리로 경로를 구성하거나 복사 한 JDBC 드라이버가 독립 ERR 로그 파일을 찾아, 바람둥이 로그 폴더를 이동할 수 있습니다 (예 : $ CATALINA_HOME/lib 디렉토리 또는 WEB-INF/lib에) ?

또한 연결 풀을 사용하면 더 좋을 것입니다. tomcat에는 자신의 DB 연결을 생성하는 것보다 나은 접근 방법이 있습니다.

또한 DB 관련 리소스를 정리하면 더 좋을 수도 있습니다 (단순화를 위해 위 코드에서 제외하지 않은 경우).

희망이 도움이됩니다.

예, 다른 응답자와 동의합니다. 자세한 오류 로깅을받는 것이 선호되는 경로 일 수 있습니다.

0

System.err.println을 사용하는 대신 e.printStackTrace()를 사용하십시오. 오류 스트림이 버퍼링되면 플러시 될 기회가 생기지 않을 수 있습니다. printStacktrace를 사용하면 예외 세부 사항을 볼 수 있습니다.

0

어쩌면 당신은

0

코드를 변경하십시오.

Class.forName("com.mysql.jdbc.Driver"); 
관련 문제