Ich habe nach Fällen unter ähnlichen Bedingungen gesucht, aber kann nicht so etwas wie mein Problem finden.Insert Anweisung in Azure SQL Tabelle ist nicht möglich wegen NullException
würde Ich mag ein einfaches Einfügen in meinen Tisch-Sitze hinzufügen
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.");
}
}
Es auf localhost funktioniert, aber ich habe es auf azur einzusetzen. Ich starte diese Klasse über RESTAPI und erhalte den folgenden Fehlercode. Ich kann nicht verstehen, warum der Code auf localhost funktioniert, aber nicht in azurblau.
<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)
Warum der folgende Code ist null?
String sql = "INSERT INTO Seats (seat_used) VALUES ('"+true+"')";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.execute();
Wenn Sie keine Verbindung mit 'connection = DriverManager.getConnection (Connection) erhalten;' Sie die gewünschte NPE erhalten, wenn eine Anweisung vorzubereiten versucht –
Sie erhalten „Datenbank verbunden ist.“ auf Ihrer Ausgabe vor der Ausnahme? –
Danke für Ihre Hilfe. Ich denke, du hast recht mit der ersten Annahme. Ich denke, meine Verbindung ist null, aber ich kann nicht verstehen warum? Es funktioniert auf localhost, aber nicht auf meiner azure cloud/azure webapp? Ich änderte den Connectionstring zu \t \t String Connection = "jdbc: sqlserver: // localhost; integratedSecurity = true"; Aber es funktioniert nicht. – Mergim