1*fd76c71bSTreehugger Robot package SQLite; 2*fd76c71bSTreehugger Robot 3*fd76c71bSTreehugger Robot /** 4*fd76c71bSTreehugger Robot * Class to represent compiled SQLite VM. 5*fd76c71bSTreehugger Robot */ 6*fd76c71bSTreehugger Robot 7*fd76c71bSTreehugger Robot public class Vm { 8*fd76c71bSTreehugger Robot 9*fd76c71bSTreehugger Robot /** 10*fd76c71bSTreehugger Robot * Internal handle for the compiled SQLite VM. 11*fd76c71bSTreehugger Robot */ 12*fd76c71bSTreehugger Robot 13*fd76c71bSTreehugger Robot private long handle = 0; 14*fd76c71bSTreehugger Robot 15*fd76c71bSTreehugger Robot /** 16*fd76c71bSTreehugger Robot * Internal last error code for compile()/step() methods. 17*fd76c71bSTreehugger Robot */ 18*fd76c71bSTreehugger Robot 19*fd76c71bSTreehugger Robot protected int error_code = 0; 20*fd76c71bSTreehugger Robot 21*fd76c71bSTreehugger Robot /** 22*fd76c71bSTreehugger Robot * Perform one step on compiled SQLite VM. 23*fd76c71bSTreehugger Robot * The result row is passed to the given callback interface.<BR><BR> 24*fd76c71bSTreehugger Robot * 25*fd76c71bSTreehugger Robot * Example:<BR> 26*fd76c71bSTreehugger Robot * <PRE> 27*fd76c71bSTreehugger Robot * ... 28*fd76c71bSTreehugger Robot * try { 29*fd76c71bSTreehugger Robot * Vm vm = db.compile("select * from x; select * from y;"); 30*fd76c71bSTreehugger Robot * while (vm.step(cb)) { 31*fd76c71bSTreehugger Robot * ... 32*fd76c71bSTreehugger Robot * } 33*fd76c71bSTreehugger Robot * while (vm.compile()) { 34*fd76c71bSTreehugger Robot * while (vm.step(cb)) { 35*fd76c71bSTreehugger Robot * ... 36*fd76c71bSTreehugger Robot * } 37*fd76c71bSTreehugger Robot * } 38*fd76c71bSTreehugger Robot * } catch (SQLite.Exception e) { 39*fd76c71bSTreehugger Robot * } 40*fd76c71bSTreehugger Robot * </PRE> 41*fd76c71bSTreehugger Robot * 42*fd76c71bSTreehugger Robot * @param cb the object implementing the callback methods. 43*fd76c71bSTreehugger Robot * @return true as long as more row data can be retrieved, 44*fd76c71bSTreehugger Robot * false, otherwise. 45*fd76c71bSTreehugger Robot */ 46*fd76c71bSTreehugger Robot step(Callback cb)47*fd76c71bSTreehugger Robot public native boolean step(Callback cb) throws SQLite.Exception; 48*fd76c71bSTreehugger Robot 49*fd76c71bSTreehugger Robot /** 50*fd76c71bSTreehugger Robot * Compile the next SQL statement for the SQLite VM instance. 51*fd76c71bSTreehugger Robot * @return true when SQL statement has been compiled, false 52*fd76c71bSTreehugger Robot * on end of statement sequence. 53*fd76c71bSTreehugger Robot */ 54*fd76c71bSTreehugger Robot compile()55*fd76c71bSTreehugger Robot public native boolean compile() throws SQLite.Exception; 56*fd76c71bSTreehugger Robot 57*fd76c71bSTreehugger Robot /** 58*fd76c71bSTreehugger Robot * Abort the compiled SQLite VM. 59*fd76c71bSTreehugger Robot */ 60*fd76c71bSTreehugger Robot stop()61*fd76c71bSTreehugger Robot public native void stop() throws SQLite.Exception; 62*fd76c71bSTreehugger Robot 63*fd76c71bSTreehugger Robot /** 64*fd76c71bSTreehugger Robot * Destructor for object. 65*fd76c71bSTreehugger Robot */ 66*fd76c71bSTreehugger Robot finalize()67*fd76c71bSTreehugger Robot protected native void finalize(); 68*fd76c71bSTreehugger Robot 69*fd76c71bSTreehugger Robot /** 70*fd76c71bSTreehugger Robot * Internal native initializer. 71*fd76c71bSTreehugger Robot */ 72*fd76c71bSTreehugger Robot internal_init()73*fd76c71bSTreehugger Robot private static native void internal_init(); 74*fd76c71bSTreehugger Robot 75*fd76c71bSTreehugger Robot static { internal_init()76*fd76c71bSTreehugger Robot internal_init(); 77*fd76c71bSTreehugger Robot } 78*fd76c71bSTreehugger Robot } 79