roSqliteStatement
This object is created by calling the CreateStatement()
method on an roSqliteDatabase object. The JavaScript equivalent is to use the IndexedDB.
ifSqliteStatement
All bind methods return True upon success.
BindByName(associative_array As Object) As Boolean
Binds the SQL variable(s) using the names contained in the SQL statement.
BindByOffset(associative_array/enumerable As Object) As Boolean
Binds the SQL variable(s) using the index contained in the SQL statement. If passed an associative array, this method will convert the keys of the associative array into numeric offsets when binding. If passed an enumerable object (e.g. roArray), it will bind the values of the enumerable in the order that they are stored.
BindText(variable/index As Object, value As String) As Boolean
Binds the SQL variable indicated by the name or index parameter to the passed string value.
BindInteger(variable/index As Object, value As Integer) As Boolean
Binds the SQL variable indicated by the name or index parameter to the passed integer value.
Run() As Integer
Runs the SQL statement immediately and waits for the integer result. The following are possible integer result codes:
100: Statement complete
101: Busy
102: Rows available
RunBackground() As Integer
Runs the SQL statement in the background. You can use roSqliteDatabase.SetPort() to set a message port that will receive an roSqliteEvent message at a later point. The RunBackground() call will result in an integer transaction ID, which will appear in the roSqliteEvent message that matches the transaction.
GetData() As Object
Returns an associative array of name/value pairs that are available after a SELECT (or similar) operation.
Finalise()
Finalizes the statement. This method should be applied to statements before the parent database is closed. The object should not be used after this method is called. Also note that objects are automatically finalized when they are deleted.
Examples
The following script inserts into a table using the BindByName()
method:
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()
The following script inserts into a table in the background:
' 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.
The following script queries from a table:
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()
ON THIS PAGE