roSqliteStatement
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()