【发布时间】:2013-09-28 19:29:11
【问题描述】:
运行程序时出现java.lang.NullPointerException 错误。似乎错误似乎在 try 块内:
rs = st.executeQuery(query);
下面的Java代码中的方法regcustomers。请检查我的代码并帮助我了解我做错了什么。
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();
}
}
}
和
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;
}
}
【问题讨论】:
-
con.makeConnection()是做什么的? -
你的 con.makeConnection() 在做什么?如果可能,请发布所有相关代码。
-
并确保异常归咎于您认为有问题的行。添加异常会很好(并指出线条)。
-
注意:SQL 表应该始终是单数的。您应该将
regcustomers更改为regcustomer。 -
快速评论:关于参数化参数的研究。您的代码似乎容易受到 sql 注入的影响。
标签: java mysql exception-handling nullpointerexception try-catch