2009-04-04 1 views
0

이 코드는 간단한 애플리케이션에서 잘 작동하므로 드라이버는 문제가 없습니다. 그래서 연결 개체를 드라이버로 초기화 할 수없는 이유는 무엇입니까?연결 객체가 null이되기 때문에 MySQL 데이터베이스에 레코드를 삽입하지 않는 Struts2 예제

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import com.opensymphony.xwork2.ActionSupport;

공용 클래스 삽입 ActionSupport를 {

public String execute() throws Exception, SQLException { 

    String sql = ""; 

    String url = "jdbc:mysql://localhost:3306/test"; 

    //String dbName = "test"; 

    String driverName = "org.gjt.mm.mysql.Driver"; 

    String userName = "root"; 

    String password = "root"; 

    Connection con=null; 

    Statement stmt=null; 

    try { 

     Class.forName(driverName).newInstance(); 

     con = DriverManager.getConnection(url, userName, password); 

     stmt = con.createStatement(); 

    } catch (Exception e) { 

     System.out.println(e.getMessage()); 

    } 

을}

+0

오류 메시지 –

답변

0

예외가 무엇을 말하는가 확장? createStatement의 NullPointerException이 발생합니까?

어쨌든 클래스가로드되었습니다. 클래스 경로의 클래스 (예 : 클래스 패스의 MySQL jar)

Class.forName()에서 반환 된 객체를 검사하여 클래스가 발견되었는지 확인합니다.

의견을 읽은 후에는 클래스 경로 문제가 있음이 분명합니다. mysql jar는 classpath에 없다. 나는 이클립스에서 빌드 경로를 변경하는 것이 사소한 것처럼 당신이 웹 어플리케이션 (war 파일)에 대해 이야기하고 있다고 가정한다.

예를 들어 tomcat에 배포 된 웹 응용 프로그램에서 < 웹 응용 프로그램 이름 >/WEB-INF/lib를 볼 수 있습니다. WEB-INF/lib/mysql-connector-java-5.0.5.jar 파일 또는 비슷한 파일이 있어야합니다.

war 파일 (아직 배포되지 않음)이있는 경우 명령 줄 도구 "jar"를 사용하여 추출하거나 파일 목록에서 파일을 가져올 수 있습니다. 명령 행에서 jar tf | grep mysql jarfile이 보여야한다. 창을 사용하는 경우; WinRAR (아마 WinZip)도 warfiles를 열 수 있습니다. WEB-INF/lib에서 MySQL jar 파일을 볼 수 있어야합니다.

maven을 사용하여 웹 앱을 만드는 경우, mysql jar에 종속성을 추가하는 것을 잊지 마십시오. 빌드에 개미를 사용한다면; war 파일을 생성하기 전에 mysql jar 파일을 WEB-INF/lib에 복사하는 것을 잊지 마십시오.

현재 권장되는 드라이버는 'com.mysql.driver.Driver'이며 'org.gjt.mm.mysql.Driver'가 아닙니다. 이전 드라이버 대신 해당 Driver 클래스를로드하려고 할 수 있습니다. 더욱이; 이 드라이버가 실제로 mysql jar에 있는지 확인하십시오 (jar tf mysq.jar | grep Driver). 드라이버가 mysql jar 인 경우 webapp (WEB-INF/lib)의 클래스 경로에 이 있습니다 (버전 충돌은 재미 없습니다). does not는 일한다 나는 무엇이 틀릴 수 있었는지 정말로 모른다. 나는 MySQL에서 드라이버 jar를 다시 다운로드하고 다시 시도 할 것이라고 생각한다.

+0

을 제공하십시오. Class.forName()이 null을 반환합니다. 클래스가로드되었습니다. 어떻게 해결할 수 있을까요? 미리 감사드립니다 – Jugal

+0

WEB-INF/lib에 mysql 커넥터 jar 파일이 있지만 com.mysql.jdbc.Driver 예외 클래스를 찾을 수 없습니다. 전쟁 파일을 만들기 전에 jar 파일을 빌드하고 복사하는 데 Ant를 사용하고 있습니다. – Jugal

+0

고맙습니다. 문제가 해결되었으며 오류는 mysql jar 파일의 확장입니다. – Jugal