调用ResultSet.getDate()时出现NullPointerException

Joh*_*pit 9 java jdbc

我正在使用以下代码java.lang.NullPointerException进行调用ResultSet.getDate().但是,数据库中的条目似乎不是null.连接似乎是活动的,因为正在获取其他字段.我究竟做错了什么?

try {
    ... /* Code that creates a connection and initializes statement */

    String query = "SELECT * FROM groups WHERE id = 'testGroup1'";
    ResultSet rs = statement.executeQuery(query);
    if(rs.next()) {
        admin = rs.getString("admin_id");
        User.process(admin);
        java.sql.Date created_on = rs.getDate("created_on");
        System.out.println("Created on = " + created_on.toString());
    }
}
catch(Exception e) {
    System.out.println("Stuck here");
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

这是输出和堆栈跟踪:

Admin id = 42          // User.process prints the admin id
Stuck here
java.lang.NullPointerException
    at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:966)
    at com.mysql.jdbc.ResultSet.getDate(ResultSet.java:1988)
    at com.myapp.server.model.Group.initInfo(Group.java:39)
    ...
Run Code Online (Sandbox Code Playgroud)

我有以下架构:

+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| id                | varchar(50)  | NO   | PRI | NULL    |       |
| admin_id          | varchar(50)  | NO   | MUL | NULL    |       |
| created_on        | datetime     | NO   |     | NULL    |       |
+-------------------+--------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)

以及数据库中的以下条目:

+------------+----------+---------------------+
| id         | admin_id | created_on          |
+------------+----------+---------------------+
| testGroup1 | 42       | 2014-12-15 22:46:31 |
+------------+----------+---------------------+
Run Code Online (Sandbox Code Playgroud)

Sem*_*ker 4

正如这个问题中提到的,你可以尝试这样的事情吗?

我也从上面提到的问题中获取代码。

Timestamp timestamp = resultSet.getTimestamp(i);
if (timestamp != null)
    date = new java.util.Date(timestamp.getTime()));
Run Code Online (Sandbox Code Playgroud)