2016-06-06 3 views
1

비슷한 상황에서 사례를 검색했지만 내 문제와 같은 것을 찾을 수 없습니다.NullException 때문에 Azure SQL 테이블에 문을 삽입 할 수 없습니다.

나는 그것은 로컬 호스트에서 작동 내 테이블 좌석

package com.mergim; 

    //Use the JDBC driver 
    import java.sql.*; 
    import java.util.ArrayList; 
    import com.microsoft.sqlserver.jdbc.*; 

public class SQLTest { 

public static void main(String[] args) throws SQLException { 
    Connection(); 
} 
public static void Connection() throws SQLException{ 
    String connectionString = 
      "jdbc:sqlserver://eebproject.database.windows.net:1433;"+"ssl=require;" 
      + "database=MYDATABASE;" 
      + "user=MYNAME;" 
      + "password=MYPASSWORD;" 
      + "encrypt=true;" 
      + "trustServerCertificate=false;" 
      +"hostNameInCertificate=northeurope1a.control.database.windows.net;" 
      + "loginTimeout=30;"; 

    // Declare the JDBC objects. 
    Connection connection = null; 

    try { 
     connection = DriverManager.getConnection(connectionString); 
     System.out.println("Database connected."); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 


    String sql = "INSERT INTO Seats (seat_used) VALUES ('"+true+"')"; 
    PreparedStatement stmt = connection.prepareStatement(sql); 
    stmt.execute(); 

    // SELECT ALL ENTRIES 
    Statement stmt1 = connection.createStatement(); 
    String sql1 = "SELECT seat_id, seat_used FROM Seats"; 
    ResultSet rs = stmt1.executeQuery(sql1); 

    while(rs.next()){ 
     System.out.print("ID: " + rs.getInt(1)); 
     System.out.print(" --> Status: " + rs.getBoolean(1)); 
     System.out.println(); 
     }  
    rs.close(); 
    System.out.println("Finished SelectAll-Statement."); 
} 
} 

에 간단한 삽입을 추가하고 싶습니다,하지만 난 푸른에 배포해야합니다. RESTAPI에서이 클래스를 시작하고 다음 오류 코드를받습니다. 코드가 localhost에서는 작동하지만 하늘빛에서는 작동하지 않는 이유를 이해할 수 없습니다.

<b>message</b> 
     <u></u> 
    </p> 
    <p> 
     <b>description</b> 
     <u>The server encountered an internal error that prevented it from fulfilling this request.</u> 
    </p> 
    <p> 
     <b>exception</b> 
    </p> 
    <pre>java.lang.NullPointerException 
com.mergim.SQLTest.Connection(SQLTest.java:37) 
com.mergim.Sitzplatzstatus.post(Sitzplatzstatus.java:49) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:497) 
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) 
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) 
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) 
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) 
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

이유는 다음과 같은 코드가 null?

 String sql = "INSERT INTO Seats (seat_used) VALUES ('"+true+"')"; 
    PreparedStatement stmt = connection.prepareStatement(sql); 
    stmt.execute(); 
+0

만약'connection = DriverManager.getConnection (connectionString); '으로 연결하지 못하면 문장을 준비 할 때 원하는 NPE를 얻을 것입니다. –

+0

"데이터베이스에 연결되었습니다." 예외 전에 출력에? –

+0

도움 주셔서 감사합니다. 제 생각에 당신이 맞다고 생각합니다. 내 연결이 null이라고 생각하지만 이유를 이해할 수 없습니까? 그것은 localhost에서 작동하지만 내 azure cloud/azure webapp에서는 작동하지 않습니까? connectionString을 \t \t으로 변경했습니다. String connectionString = "jdbc : sqlserver : // localhost; integratedSecurity = true"; 그러나 그것은 효과가 없습니다. – Mergim

답변

0

... 코드를 대체 N보십시오. 는 JDBC 드라이버 누락 된 경로는 위의 코드는 지금 작동하고 올바른 경로로

connection = DriverManager.getConnection(connectionString); 

에 영향을 미쳤다. 도와 줘서 고마워.

0

내가 오류를 해결하고 이유는 JDBC 드라이버에 누락 된 경로이었다

while(rs.next()){ 
     System.out.print("ID: " + rs.getInt(0)); 
     System.out.print(" --> Status: " + rs.getBoolean(1)); 
     System.out.println(); 
     } 
+0

처음에 빠른 응답을 보내 주셔서 감사드립니다. // SELECT ALL ENTRIES 아래의 코드는 Nullpointer-Exception에서 아무런 효과가 없습니다. 이해할 수 없습니다. 이 부분은 테스트 용으로 만 제작했습니다. 그럼에도 불구하고 당신의 대답에 감사드립니다. – Mergim

관련 문제