비슷한 상황에서 사례를 검색했지만 내 문제와 같은 것을 찾을 수 없습니다.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();
만약'connection = DriverManager.getConnection (connectionString); '으로 연결하지 못하면 문장을 준비 할 때 원하는 NPE를 얻을 것입니다. –
"데이터베이스에 연결되었습니다." 예외 전에 출력에? –
도움 주셔서 감사합니다. 제 생각에 당신이 맞다고 생각합니다. 내 연결이 null이라고 생각하지만 이유를 이해할 수 없습니까? 그것은 localhost에서 작동하지만 내 azure cloud/azure webapp에서는 작동하지 않습니까? connectionString을 \t \t으로 변경했습니다. String connectionString = "jdbc : sqlserver : // localhost; integratedSecurity = true"; 그러나 그것은 효과가 없습니다. – Mergim