以前は問題なく動作していた Java プログラムが、今は奇妙なエラーを出しているのですが、理由がわかりません。この関数にテーブル名を渡し、他の関数からカラム名を取得するという流れです。次に、SQL が形成されて実行され、HTML テーブルにデータが生成されます。これは、Java プログラム全体の 1 つの関数です。使用される Java バージョンは 1.6 です (1.6 はすべてのプロジェクトで使用される標準であるため、1.7 にアップグレードすることはできません)。Googleで確認したように、結果セットから同じ列を複数回フェッチすると、このエラーが発生しますが、私の場合、列を1回だけフェッチしています。
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>"