roSqliteStatement
8 min
este objeto se crea llamando al método createstatement() en un objeto rosqlitedatabase el equivalente en javascript es usar indexeddb ifsqlitestatement todos los métodos vincular devuelven true en caso de éxito bindbyname(associative array as object) as boolean vincula las variables sql usando los nombres contenidos en la sentencia sql bindbyoffset(associative array/enumerable as object) as boolean vincula las variables sql usando el índice contenido en la sentencia sql si se pasa un arreglo asociativo, este método convertirá las claves del arreglo asociativo en desplazamientos numéricos al vincular si se pasa un objeto enumerable (por ejemplo, roarray ), vinculará los valores del enumerable en el orden en que están almacenados bindtext(variable/index as object, value as string) as boolean vincula la variable sql indicada por el parámetro name o index al valor de cadena pasado bindinteger(variable/index as object, value as integer) as boolean vincula la variable sql indicada por el parámetro name o index al valor entero pasado run() as integer ejecuta la sentencia sql inmediatamente y espera el resultado entero los siguientes son posibles códigos enteros de resultado 100 sentencia completada 101 ocupado 102 filas disponibles runbackground() as integer ejecuta la sentencia sql en segundo plano puede usar rosqlitedatabase setport() para establecer un puerto de mensajes que recibirá un mensaje rosqliteevent más adelante la llamada a runbackground() dará como resultado un id entero de transacción, que aparecerá en el mensaje rosqliteevent que coincida con la transacción getdata() as object devuelve un arreglo asociativo de pares nombre/valor que están disponibles después de una operación select (o similar) finalise() finaliza la sentencia este método debe aplicarse a las sentencias antes de que se cierre la base de datos principal el objeto no debe usarse después de llamar a este método también tenga en cuenta que los objetos se finalizan automáticamente cuando se eliminan ejemplos el siguiente script inserta en una tabla usando el método bindbyname() insertstmt = db createstatement("insert into playback (md5,path,playback count) values(\ md5 param,\ path param,\ pc param);") print insertstmt if type(insertstmt) <> "rosqlitestatement" then print "we didn't get a statement returned!!" end endif params = { md5 param "abdef12346", path param "/foo/bar/bing/bong", pc param 11 } bindresult = insertstmt bindbyname(params) if bindresult print "bindbyname ok" else print "bindbyname failed" end endif sqlresult = insertstmt run() print sqlresult if sqlresult = sqlite complete print "table insertion ok" else print "table insertion failed" endif insertstmt finalise() el siguiente script inserta en una tabla en segundo plano ' this examples assume you have set a message port on your rosqlitedatabase instance ' insertstmt = db createstatement("insert into playback (md5,path,playback count) values(\ md5 param,\ path param,\ pc param);") print insertstmt if type(insertstmt) <> "rosqlitestatement" then print "we didn't get a statement returned!!" end endif params = { md5 param "abdef12348", path param "/foo/bar/bing/bong", pc param 13 } bindresult = insertstmt bindbyname(params) if bindresult print "bindbyname ok" else print "bindbyname failed" end endif expectedid = insertstmt runbackground() e = mp waitmessage(10000) if e <> invalid then if type(e) = "rosqliteevent" then transid = e gettransactionid() sqlresult = e getsqlresult() print transid print sqlresult if transid <> expectedid then print "incorrect transaction id" end endif if sqlresult <> sqlite complete then print "sql insertion failed" end endif else print "runbackground() wrong event failed" end endif else print "runbackground() no response failed" end endif ' you don't need to call finalise() since that'll be done by the background processor el siguiente script consulta desde una tabla selectstmt = db createstatement("select from playback;") if type(selectstmt) <> "rosqlitestatement" then print "we didn't get a statement returned!!" end endif sqlresult = selectstmt run() print sqlresult while sqlresult = sqlite rows resultsdata = selectstmt getdata() print resultsdata; sqlresult = selectstmt run() end while selectstmt finalise()