package jsqlite; import java.util.Vector; /** * Class representing an SQLite result set as * returned by the * <A HREF="Database.html#get_table(java.lang.String)">Database.get_table</A> * convenience method. * <BR><BR> * Example:<BR> * * <PRE> * ... * SQLite.Database db = new SQLite.Database(); * db.open("db", 0); * System.out.print(db.get_table("select * from TEST")); * ... * </PRE> * Example output:<BR> * * <PRE> * id|firstname|lastname| * 0|John|Doe| * 1|Speedy|Gonzales| * ... * </PRE> */ public class TableResult implements Callback { /** * Number of columns in the result set. */ public int ncolumns; /** * Number of rows in the result set. */ public int nrows; /** * Column names of the result set. */ public String column[]; /** * Types of columns of the result set or null. */ public String types[]; /** * Rows of the result set. Each row is stored as a String array. */ public Vector rows; /** * Maximum number of rows to hold in the table. */ public int maxrows = 0; /** * Flag to indicate Maximum number of rows condition. */ public boolean atmaxrows; /** * Create an empty result set. */ public TableResult() { clear(); } /** * Create an empty result set with maximum number of rows. */ public TableResult(int maxrows) { this.maxrows = maxrows; clear(); } /** * Clear result set. */ public void clear() { column = new String[0]; types = null; rows = new Vector(); ncolumns = nrows = 0; atmaxrows = false; } /** * Callback method used while the query is executed. */ public void columns(String coldata[]) { column = coldata; ncolumns = column.length; } /** * Callback method used while the query is executed. */ public void types(String types[]) { this.types = types; } /** * Callback method used while the query is executed. */ public boolean newrow(String rowdata[]) { if (rowdata != null) { if (maxrows > 0 && nrows >= maxrows) { atmaxrows = true; return true; } rows.addElement(rowdata); nrows++; } return false; } /** * Make String representation of result set. */ public String toString() { StringBuffer sb = new StringBuffer(); int i; for (i = 0; i < ncolumns; i++) { sb.append(column[i] == null ? "NULL" : column[i]); sb.append('|'); } sb.append('\n'); for (i = 0; i < nrows; i++) { int k; String row[] = (String[]) rows.elementAt(i); for (k = 0; k < ncolumns; k++) { sb.append(row[k] == null ? "NULL" : row[k]); sb.append('|'); } sb.append('\n'); } return sb.toString(); } }