2012-05-26 3 views
1

파일 속성을 통해 mysql 데이터베이스와 연결을 설정하고 서블릿에서 정보를 실행하려고합니다. 자바 클래스를 통해 데이터베이스에 연결할 수 없습니다

public class pageDao { 

private Connection connection; 
private Statement statement; 

private pageDao() { 
Properties prop = new Properties(); 

    try { 
     //Class.forName("oracle.jdbc.driver.OracleDriver"); 
     //Class.forName("org.gjt.mm.mysql.Driver"); 
     Class.forName("com.mysql.jdbc.Driver"); 
    } catch (ClassNotFoundException cnfe) { 
     System.out.println("Error loading driver: " +cnfe); 
    } 

    try { 
     try { 
      //load a properties file 
      prop.load(new FileInputStream("config.properties")); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     String db = prop.getProperty("database"); 
     String dbuser = prop.getProperty("dbuser"); 
     String dbpassword = prop.getProperty("dbpassword"); 
     connection = DriverManager.getConnection(db,dbuser,dbpassword); 

    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

} 
private static pageDao thisDao; 

public static pageDao gedDao() 
{ 
    if(thisDao == null) 
     thisDao = new pageDao(); 
    return thisDao; 
} 

public PageData getPage(String id) 
{ 
    PageData data = new PageData(); 

    try { 
     statement = connection.createStatement(); 
     ResultSet rs = statement.executeQuery("select * from pages where id='"+id+"'"); 
     if(rs.next()) 
     { 
      data.setId(rs.getString("id")); 
      data.setParentid(rs.getString("parentid")); 
      data.setTitle(rs.getString("title")); 
      data.setTitle4menu(rs.getString("title4menu")); 
      data.setKeywords(rs.getString("keywords")); 
      data.setDescription(rs.getString("description")); 
      data.setMaintext(rs.getString("maintext")); 
     } 
     else 
      return null; 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 


    return data; 
} 

내가 그것을 실행

, 그것은 연결이 설정되지 않았 음 실수를 표시하지 않지만,이

public PageData getPage(String id) { 
     PageData data = new PageData(); 

     try { 
      statement = connection.createStatement(); 

에 도달 할 때 그것은 java.lang.NullPointerException를 던졌습니다 : 내 연결 클래스는 다음과 같습니다. 누구든지 나를 도와 줄 수 있습니까?

+0

잘못된 로그인을하여 통과 매개 변수를 확인 ? – 11684

+0

1) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. 2) 코드 블록에 일관성 있고 논리적 인 들여 쓰기를 사용하십시오. –

+0

Per Alexander Georgii-Hemm - 변수 "connection"이 null입니까? 올바른 포트를 사용하고 있는지 확인 했습니까? –

답변

0

코드에는 문제가 없습니다. 두 번째 try 블록의 마지막 줄에

검사 샘플 ...

private Connection getConnection() { 
    try { 
     String dbUrl = "jdbc:mysql://localhost:3306/projectmining"; 
     Class.forName("com.mysql.jdbc.Driver"); 
     return DriverManager.getConnection(dbUrl, "root", "admin"); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    return null; 
} 
+0

내가 이런 식으로 입력하면 작동하지만 속성 파일에 내 URL, 사용자 이름 및 암호를 저장하고 거기에서이 정보를 검색하여 데이터베이스에 대한 암호가 코드에 기록되지 않도록하고 싶습니다. 내가 throough getProperty() 할 때, 그것은 NullPointerException을 throw합니다. – Gipsy

+0

속성 파일에서 값을 가져온 후 콘솔에 매개 변수를 인쇄하십시오. –

관련 문제