JDBC loopback driver: first version
experimental JDBC driver which does not need any real SQL database,
just passes values of statement parameters as a result set.
The first parameter is column count, then follows column names and then data.
Example:
2 a b c d e f
will result into table:
a | b
-----
c | d
e | f
/**
* SQL-DK
* Copyright © 2014 František Kučera (frantovo.cz)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package info.globalcode.jdbc.loopback;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
/**
*
* @author Ing. František Kučera (frantovo.cz)
*/
public class ResultSet extends AbstractResultSet {
private final ResultSetMetaData metadata;
private final Iterator<Object[]> data;
private Object[] currentRow;
public ResultSet(ResultSetMetaData metadata, List<Object[]> table) {
data = table.listIterator();
this.metadata = metadata;
}
@Override
public boolean next() throws SQLException {
if (data.hasNext()) {
currentRow = data.next();
return true;
} else {
return false;
}
}
@Override
public Object getObject(int columnNumber) throws SQLException {
return currentRow[columnNumber - 1];
}
@Override
public ResultSetMetaData getMetaData() throws SQLException {
return metadata;
}
@Override
public void close() throws SQLException {
}
@Override
public boolean isClosed() throws SQLException {
return false;
}
}