-1

以前は問題なく動作していた 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>"
4

1 に答える 1