我有以下方法.i使用SQL server 2005。
private TableObject getTableObject(ResultSet rs, boolean raw) throws TableObjectException
{
TableObject to = new TableObject();//In this class all variable is ArrayList type
if (rs == null)
return to;
try
{
ResultSetMetaData rsm = rs.getMetaData();
int colCount = rsm.getColumnCount();
for (int i = 1; i <= colCount; i++)
{
to.setColLabel(rsm.getColumnLabel(i));
to.setColType(rsm.getColumnClassName(i));
}
while (rs.next())
{
for (int i = 0; i < colCount; i++)
{
if (raw)
{
switch (rsm.getColumnType(i + 1))
{
case java.sql.Types.DATE:
to.addColumn(rs.getDate(i + 1));
break;
case java.sql.Types.VARCHAR:
to.addColumn(rs.getString(i + 1));
break;
case java.sql.Types.INTEGER:
to.addColumn(rs.getInt(i + 1));
break;
case java.sql.Types.TIMESTAMP:
to.addColumn(rs.getTimestamp(i + 1));
break;
case java.sql.Types.TIME:
to.addColumn(rs.getTime(i + 1));
break;
default:
to.addColumn(rs.getString(i + 1));
break;
}
}
else
{
to.addColumn(rs.getString(i + 1));
}
}
to.addRow();
}
}
catch (Exception e)
{
// LINE NO : 289
throw new TableObjectException("Exception generated while creating TableObject from Resultset :" + e.getMessage());
}
return to;
}
}
从上面的方法我有以下错误,其中(e.getMessage())错误消息为NULL。
com.os.exceptions.TableObjectException: Exception generated whicle creating TableObject from Resultset :null
at com.os.db.DbManager.getTableObject(DbManager.java:289)
据我所知,这个错误归因于NPE
和所有人说'Resultset (rs) and ResultSetMetaData (rsm) never null'
,而不是我已经检查过(rs == null
)条件。
所以我在这里尝试了很多时间来重现同样的错误,但没有。
那么有什么案例可以产生这样的错误?它应该从null ResultSetMetaData rsm?
生成答案 0 :(得分:1)
在这种情况下,NullPointerException
只能由JDBC驱动程序中的错误引起。根据{{3}},SQLException
的调用只能引发getMetaData()
。如果您将调用的输出发布到e.printStackTrace()
会很有帮助,因为在没有调用此类论坛的情况下调试NPE
几乎是不可能的。如果您包含有关您正在使用的驱动程序的信息,也会有所帮助。