statement.executeUpdate() 上的 NullPointerException
NullPointerException on statement.executeUpdate()
我用 JSP 和 Java 创建了一个网站,它只是显示一个表单(这是一个用户注册表),用户可以在其中填写它,然后我希望将它存储在数据库中。
我安装了 Eclipse,Tomcat(在本地主机 8080 上托管)和 Wampserver(拥有 phpmyadmin 和我的 SQL 数据库)。
我尝试创建一个 ORM(对象关系映射),因此当客户端提交表单时,它将数据发送到我的 ORM,然后我的 ORM 将数据存储在我的数据库中。
问题是,当用户 submit 提交表单时,我的 table 被创建(我可以在 phpmyAdmin 上看到它),所以它 很好 。但它在我的网站上崩溃并产生错误
HTTP500, java.lang.NullPointerException.
它说问题出在
com.jweb.bdd.Orm.Perform(Orm.java:139)
这是我的 CreateClient.java 文件中的代码,这个 java 文件处理我的注册表单的 servlet:
public class CreationClient extends HttpServlet {
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
[...]
String lastName= request.getParameter( CHAMP_LASTNAME);
String Name= request.getParameter( CHAMP_NAME);
String mailAdress = request.getParameter( CHAMP_MAILADRESS);
String phoneNumber= request.getParameter( CHAMP_PHONENUMBER);
String login= request.getParameter( CHAMP_LOGIN);
[...]
Orm orm = new Orm();
String[] field = {"login", "firstName", "lastName", "mailAdress", "adress", "phoneNumber", "password"};
String[] values = {login, firstName, lastName, mailAdress, adress, phoneNumber, password};
orm.Insert("client", field);
orm.Values(values);
orm.Perform();
orm.CloseConnection();
[...]
}
}
这是我的 ORM 类中的 Perfom() 函数:
public void Perform(){
ResultSet rst = null;
if (select != null){
if (from != null && where != null){
try {
rst = statement.executeQuery(select + from + where);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
int i = 0;
while (rst.next()){
res[i] = rst.getString(0) + ":" + rst.getString(1)+ ":" + rst.getString(3) + ":" + rst.getString(4) +":" + rst.getString(5) + ":" + rst.getString(6)+ ":" + rst.getString(7) + ";";
i++;
}
} catch (SQLException e){
e.printStackTrace();
}
}
}
else if (insert != null){
if (values != null){
try {
// statement = connexion.creatStatemnt();
int res = statement.executeUpdate(insert + values);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
try {
rst.close();
} catch (SQLException ignore){
}
if ( statement != null ) {
try {
statement.close();
} catch ( SQLException ignore ) {
}
}
}
而第 139 行的错误是 int res = statement.executeUpdate(insert + values); :
else if (insert != null){
if (values != null){
try {
int res = statement.executeUpdate(insert + values);
} catch (SQLException e) {
e.printStackTrace();
}
}
你知道如何解决这个 NullPointer 问题吗?
谢谢。
您需要初始化 statement
对象,在您的代码中您使用了 statement.executeQuery()
而不是 statement = connection.createStatement()
初始化语句对象。
我用 JSP 和 Java 创建了一个网站,它只是显示一个表单(这是一个用户注册表),用户可以在其中填写它,然后我希望将它存储在数据库中。 我安装了 Eclipse,Tomcat(在本地主机 8080 上托管)和 Wampserver(拥有 phpmyadmin 和我的 SQL 数据库)。
我尝试创建一个 ORM(对象关系映射),因此当客户端提交表单时,它将数据发送到我的 ORM,然后我的 ORM 将数据存储在我的数据库中。
问题是,当用户 submit 提交表单时,我的 table 被创建(我可以在 phpmyAdmin 上看到它),所以它 很好 。但它在我的网站上崩溃并产生错误
HTTP500, java.lang.NullPointerException.
它说问题出在
com.jweb.bdd.Orm.Perform(Orm.java:139)
这是我的 CreateClient.java 文件中的代码,这个 java 文件处理我的注册表单的 servlet:
public class CreationClient extends HttpServlet {
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
[...]
String lastName= request.getParameter( CHAMP_LASTNAME);
String Name= request.getParameter( CHAMP_NAME);
String mailAdress = request.getParameter( CHAMP_MAILADRESS);
String phoneNumber= request.getParameter( CHAMP_PHONENUMBER);
String login= request.getParameter( CHAMP_LOGIN);
[...]
Orm orm = new Orm();
String[] field = {"login", "firstName", "lastName", "mailAdress", "adress", "phoneNumber", "password"};
String[] values = {login, firstName, lastName, mailAdress, adress, phoneNumber, password};
orm.Insert("client", field);
orm.Values(values);
orm.Perform();
orm.CloseConnection();
[...]
}
}
这是我的 ORM 类中的 Perfom() 函数:
public void Perform(){
ResultSet rst = null;
if (select != null){
if (from != null && where != null){
try {
rst = statement.executeQuery(select + from + where);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
int i = 0;
while (rst.next()){
res[i] = rst.getString(0) + ":" + rst.getString(1)+ ":" + rst.getString(3) + ":" + rst.getString(4) +":" + rst.getString(5) + ":" + rst.getString(6)+ ":" + rst.getString(7) + ";";
i++;
}
} catch (SQLException e){
e.printStackTrace();
}
}
}
else if (insert != null){
if (values != null){
try {
// statement = connexion.creatStatemnt();
int res = statement.executeUpdate(insert + values);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
try {
rst.close();
} catch (SQLException ignore){
}
if ( statement != null ) {
try {
statement.close();
} catch ( SQLException ignore ) {
}
}
}
而第 139 行的错误是 int res = statement.executeUpdate(insert + values); :
else if (insert != null){
if (values != null){
try {
int res = statement.executeUpdate(insert + values);
} catch (SQLException e) {
e.printStackTrace();
}
}
你知道如何解决这个 NullPointer 问题吗?
谢谢。
您需要初始化 statement
对象,在您的代码中您使用了 statement.executeQuery()
而不是 statement = connection.createStatement()
初始化语句对象。