数据库连接PrepareStatement具有未知的NULL指针

时间:2017-06-28 03:35:49

标签: java mysql nullpointerexception prepared-statement

我刚接触使用Java与数据库连接,但是使用以下代码得到NullPointerException:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList; 

public ArrayList<UserVO> getAllUsers(Connection connection) throws Exception {
            ArrayList<UserVO> userList = new ArrayList<UserVO>();
            try {
                PreparedStatement ps = connection.prepareStatement("SELECT * FROM user");
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    UserVO uservo = new UserVO();
                    uservo.setUsername(rs.getString("username"));
                    uservo.setPassword(rs.getString("password"));
                    userList.add(uservo);
                }
                return userList;
            } catch (Exception e) {
            throw e;
            }
        }

    }

目前

PreparedStatement ps = connection.prepareStatement("SELECT * FROM user");

代码会引发java.lang.NullPointerException.的异常我不知道为什么会这样,

System.out.println("isClosed = " + connection.isClosed());
在PreparedStatement声明返回false之前

,我可以打印出连接信息。

在查询执行之前是否知道原因或如何正确撰写语句?谢谢!

编辑:完整(ish)堆栈跟踪 - 它很长

java.lang.NullPointerException
    at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:649)
    at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:587)
    at com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:4068)
    at java.lang.String.valueOf(String.java:2994)
    at java.lang.StringBuffer.append(StringBuffer.java:263)
    at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
    at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
    at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
    at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
    at com.mysql.jdbc.Connection.registerStatement(Connection.java)
    at com.mysql.jdbc.Statement.<init>(Statement.java:270)
    at com.mysql.jdbc.PreparedStatement.<init>

0 个答案:

没有答案
相关问题