我有一个早期工作正常的java程序现在给出了奇怪的错误。我不确定原因。流程是将表名传递给此函数,并从其他函数中获取列名。然后形成sql并运行以在HTML表中生成数据。这是整个java程序的一个功能。使用的java版本是1.6(不能升级到1.7,因为1.6是所有项目中使用的标准)。当我在google上检查时,如果你从结果集中多次获取同一列,则会出现此错误,但在我的情况下,我只获取一次列。
public static String GetData(String TableName) throws IOException, SQLException
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
c = DriverManager.getConnection( "jdbc:odbc:dbname","username","password" );
Statement stmnt = c.createStatement();
try
{
String colname= GetColName(stmnt,TableName);
String colarray[] = colname.split(",");
htmlheader+="<table border=\"1\">";
htmlheader+="<caption><b>"+TableName +"</b></caption>";
htmlheader+="<tr>";
for (int n=0; n < colarray.length ; n++)
{
htmlheader+="<th>"+colarray[n]+"</th>";
}
htmlheader+="</tr>";
String sqlqry= "Select "+colname + " from "+TableName +";" ;
ResultSet result = stmnt.executeQuery(sqlqry);
while (result.next() )
{ htmlheader+="<tr>";
for (int n=0; n < colarray.length ; n++)
{
htmlheader+="<td>"+result.getString(colarray[n])+"</td>";**//Exception is coming in this line**
}
htmlheader+="</tr>";
}
htmlheader+="</table>";
}
catch( Exception e )
{
e.printStackTrace();
}
}
错误是
java.sql.SQLException: No data found
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7138)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3907)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5698)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:354)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:411)
请建议。
例外情况就在这一行
htmlheader+="<td>"+result.getString(colarray[n])+"</td>"
答案 0 :(得分:1)
您的问题正在发生,因为您尝试使用getString
colarray[n]
处的TYPE_FORWARD_ONLY
直接访问结果。 Java无法识别您需要的数据,因为为访问数据而创建的游标是以Statement stmnt = c.createStatement();
方式创建的。
将Statement s = c.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
更改为{{1}}