Hirdetés

Új hozzászólás Aktív témák

  • Mukorka
    addikt

    Sziasztok,
    egy kis segítséget szeretnék kérni.
    Van az alábbi kódom, ami egy mysql db-hez csatlakozik, lekér egy kverit és azt visszaadja tömbként.
    A problémám, h egy futásidőalatt csak egyszer működik, második futásra
    java.sql.SQLException: After end of result set
    hibát kapok. Hol lehet a hiba?

    public class SQLConForDataProvider {

    private static int rowCount = 0;
    private static int columnCount = 0;
    private static String myData [][] = null;
    String query;

    public SQLConForDataProvider(String query) {
    this.query=query;
    }

    public static String[][] executeQuery(String query) {
    try
    {
    Class.forName("com.mysql.jdbc.Driver");
    Connection con = DriverManager.getConnection(Util.JDBCURL, Util.JDBCUSER, Util.JDBCPWD);

    Statement stmt = con.createStatement();
    ResultSet resultSet = stmt.executeQuery(query);

    ResultSetMetaData resultSet_metaData= resultSet.getMetaData();
    columnCount = resultSet_metaData.getColumnCount();

    while( resultSet.next() )
    rowCount++;

    myData = new String [rowCount][columnCount];
    resultSet.beforeFirst();

    for(int row=0; row<rowCount; row++)
    {
    resultSet.next();
    for(int col=1; col<=columnCount; col++)
    myData[row][col-1] = resultSet.getString(col);
    }

    stmt.close();
    con.close();
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    return myData;
    }
    }

    Pl az hogy se a rowcount se a columncount nincs nullázva az fv hívás végén. Így meg tovább next-elsz a resultseten mint amennyi darab van benne -> jön az exception.

    A kódod jobb lenne ha az fv nem static lenne és a látszólag most fölösleges konstruktorban átadott query-vel dolgoznál és nem lenne static semmi se (Mondjuk a driver betöltése mehet static blockba). Így mindig működne az osztály ha új példányt hoznál létre minden query futtatáskor.

Új hozzászólás Aktív témák