gpt4 book ai didi

java - ResultSetMetaData 是否为空?

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:52 27 4
gpt4 key购买 nike

我使用的是 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) 和 ResultSetMetaData (rsm) 从不为空。所以我想知道我们从哪里得到这个错误。为了安全起见,我们已经进行了 rs == null 检查。

我无法再次重现相同的错误。但仍然对根本原因感兴趣。是因为 ResultSetMetaData 为空吗?

最佳答案

在这种情况下,NullPointerException 只能由 JDBC 驱动程序中的错误引起。根据documentation ,调用 getMetaData() 时只应抛出 SQLException。如果您发布对 e.printStackTrace() 的调用输出,将会很有帮助,因为如果没有 NPE,几乎不可能在这样的论坛上调试 NPE。如果您包含有关您正在使用的驱动程序的信息也会很有帮助。

关于java - ResultSetMetaData 是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20537153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com