java.lang.NullPointerException-Fehler beim ausführen der SQL-Abfrage in try-catch-block
Bekomme ich java.lang.NullPointerException
Fehler bei der Ausführung des Programms. Scheint der Fehler zu sein scheint, innerhalb des try-Blocks:
rs = st.executeQuery(query);
die Methode regcustomers
unten in der Java-code. Bitte Lesen Sie meine-code und helfen Sie mir zu verstehen, was ich falsch gemacht habe.
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.vastika.serlvet.dao.ConnectionDb;
public class RegistrationServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//Read the data
String name = req.getParameter("name");
String email = req.getParameter("email");
String line1 = req.getParameter("addressline1");
String city = req.getParameter("city");
String state = req.getParameter("state");
String country = req.getParameter("country");
String userid = req.getParameter("username");
String password = req.getParameter("password");
insertToDatabase(name, email, line1, city, state, country, userid,
password);
//Forward to Shopping page
req.getRequestDispatcher("shop.html").forward(req, res);
}
private void insertToDatabase(String name, String email, String line1,
String city, String state, String country, String userid,
String password) {
ConnectionDb con = new ConnectionDb();
Statement st = con.makeConnection();
ResultSet rs = null;
String query = "insert into regcustomers (Name, Email, Address, City, State, Country, Username, Password) values("+"'"+name+"'"+","+"'"+email+"'"+","+"'"+line1+"'"+","+"'"+city+"'"+","+"'"+state+"'"+","+"'"+country+"'"+","+"'"+userid+"'"+","+"'"+password+"'"+");";
System.out.println(query);
try {
rs = st.executeQuery(query);
System.out.println(rs.getRow());
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
und
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class ConnectionDb {
public Statement makeConnection() {
Connection conn = null;
Statement st = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/onlineshopping", "root",
"test");
st = conn.createStatement();
} catch (Exception e) {
e.getStackTrace();
}
return st;
}
}
- Was bedeutet
con.makeConnection()
tun? - was ist Ihre con.makeConnection() zu tun? poste bitte alle relevanten code, wenn möglich.
- Und stellen Sie sicher, dass die Ausnahme die Schuld, die Zeile, die Sie übernehmen, hat das problem. Hinzufügen der Ausnahme, wäre schön (und Punkt-Linien).
- Ein Hinweis: SQL-Tabellen sollten immer im singular. Sollten Sie
regcustomers
zuregcustomer
. - Kurze Bemerkung: die Forschung über parametized Argumente. Dein code scheint anfällig für sql-Injektionen.
- con.makeConnection() erzeugt Anweisung nach dem Aufbau der Verbindung.
- hier ist der code für die Methode makeConnection()
- import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class ConnectionDb { public Statement makeConnection() { Connection conn = null; Statement st = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/onlineshopping", "root", "test"); st = conn.createStatement(); } catch (Exception e) { e.getStackTrace(); } return st; } }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was happenning ist, dass Sie werden immer eine Ausnahme in der folgende code
und dann zurück
st
dienull
da der code nie zuconn.createStatement()
.Du bist nicht tatsächlich drucken die
Exception
durch die Art und Weise. Verwendene.printStackTrace()
.Auch Sie sollten eigentlich die Ausnahme behandeln.
makeConnection()
zurücknull
. Was Ausnahme zeigen Sie?makeConnection()
sagen?brauchen Sie nicht zu stellen Semikolon
;
ll es zurück
ResultSet
wenn Sie ll TrefferSELECT
Abfrageentfernen, die
ResultSet
Erklärung..verwenden
int count = st.executeUpdate();
U können versuchen, dies zu tun:
Ich denke, was u wannna tun, ist nicht eine Abfrage, ist mehr ein update. So intead:
U etwas tun zu können:
Sehen diese mehr info.
Att: u eine NullPointer Exception, weil(vielleicht)
rs = st.executeQuery(query);
abrufen, nichts.Hoffe es hilft ^^
Statment
u verwenden könnenPreparedStatement
Es ist eine seltsame situation, wenn java.lang.NullPointerException-Fehler wird ausgelöst, während der Ausführung der SQL-Abfrage in try-catch-block.
Die Abfrage aktualisiert ausgewählten index in mehrere JComboboxes.
Diese JComboboxes sind anfangs mit update manuell Indizes nach einem shema:
In dieser situation, wenn zum ausführen von mysql-update mit einem einfachen
den oben genannten Fehler ausgelöst wird.
In dieser situation ist eine Lösung, um "freizuschalten", um den code innerhalb einer if-die ist nicht aktiv während der Abfrage. Zum Beispiel:
Diese Aktion sollte natürlich vorangestellt angemessen platziert:
vor dem Aufruf der mysql-Abfrage.