voltmx.db Namespace
The voltmx.db namespace contains the following API elements.
Functions
The voltmx.db namespace contains the following functions.
voltmx.db.changeVersion
The changeVersion method allows scripts to automatically verify the version number and change it at the same time during a schema update. This method creates an SQLTransactionSync object (executeSQL) for a read/write transaction. The database's actual version changes to newVersion only if the first argument (oldVersion) exactly matches the database's actual version, otherwise throws a SQLException.
When you invoke this API, it returns immediately and asynchronously reads the transaction.
Syntax
voltmx.db.changeVersion(dbaseObjectId, oldVersion, newVersion, SQLTransactionCallback, SQLTransactionErrorCallback, SQLTransactionVoidCallback)
Input Parameters
Parameter | Description |
---|---|
dbaseObjectId [String] - Mandatory | Specifies the unique ID of the database |
oldVersion [String] - Mandatory | Specifies the older version of the database. |
newVersion [String] - Mandatory | Specifies the newer version of the database. |
SQLTransactionCallback [Function] - Mandatory | Specifies the callback function that contains the transactions. For example:function callback(dbId){//SQLTransaction contains implementation of executeSql method// invoke database.executesql method for sql trasaction} |
SQLTransactionErrorCallback [Function] - Optional | Specifies the callback that must be executed if there is an error in executing the transaction. This callback function is used to roll back the updates to the database. For example:function errorCallback(SQLError){//code} |
SQLVoidCallback [Function] - Optional | Specifies the callback that must be executed if the transaction is successful. For example:function successCallback(){//code} |
Example
changeVersion: function() {
this.baseObjectId = voltmx.db.openDatabase("webSqlDB",
"1.0",
"Sample SQL Database",
5 * 1024 * 1024);
voltmx.db.changeVersion("1.0", "1.1", null, this.commonErrorCallback, this.commonErrorCallback);
voltmx.print("");
}
Return Values
None
Platform Availability
Available on all platforms* except SPA for desktop IE8, IE9, IE10 browsers. *Dummy implementation on Mobile Web.
voltmx.db.closeDatabase
This API allows you to close the database handler of the specified version of a database.
Syntax
voltmx.db.closeDatabase(dbaseObjectId)
Input Parameters
Parameter | Description |
---|---|
dbaseObjectId [String] - Mandatory | Specifies the unique ID of the database |
Example
//The following function invokes the closeDatabase API
function closeDatabase() {
var dbName = "voltmxtestDB";
var version = "1.0";
var displayName = "demo web SQL Database";
var estimatedSize = 5 * 1024 * 1024; //5*1024*1024 indicates 5 MB
var databaseObjectId = voltmx.db.openDatabase(dbName, version, displayName, estimatedSize);
//databaseObjectId contains the unique ID of the database
voltmx.db.closeDatabase(databaseObjectId);
}
Return Values
None
Platform Availability
Available on iOS platform.
voltmx.db.executeSql
This API allows you to execute a specified SQL statement on the given database. This is an asynchronous API.
Important: The table names and column names are case sensitive.
Syntax
voltmx.db.executeSql(transactionId,SQLStatement, arguments,SQLStatementSuccessCallback,SQLStatementErrorCallback)
Input Parameters
Parameter | Description |
---|---|
transactionId [String] - Mandatory | Specifies the unique ID of the transaction. |
SQLStatement [String] - Mandatory | Specifies the SQL statement that must be executed. |
arguments [Object] - Optional | Specifies the arguments for executing the SQL statement. If this parameter is not specified or is nil, then the statement is executed without any arguments.The supported argument types are:NULL in JavaScript REALTEXTBLOB.No type affinity is performed. |
SQLStatementSuccessCallback [Function] - Optional | Specifies the callback function that must be executed when the execution of the SQL statement is a success. |
SQLStatementErrorCallback [Function] - Optional | Specifies the callback function that must be executed when the execution of the SQL statement is a failure.This callback returns a boolean value.true - ends the execution of the transaction. true is returned if there is no callback function specified as a parameter.> Important: When true is returned, the transaction is rolled back.false - continues executing the transaction.The default return value is false for this callback. |
Example
The below function inserts 3 rows into the 'employee_details' table.
var insertTable = [
["Siberius", 10],
["Clark", 10],
["Richard", 20]
];
for (i = 1;
((insertTable) != null) & amp; & amp; i & lt; = insertTable.length; i++) {
var v = insertTable[voltmx.decrement(i)];
var sqlStatement = "INSERT INTO emp_details VALUES (" + (this.count + 1000) + ",\"" + v[voltmx.decrement(1)] + "\"," + v[voltmx.decrement(2)] + ")";
this.count = this.count + 1;
voltmx.db.executeSql(transactionID,
sqlStatement,
null,
this.success_insertData,
this.commonErrorCallback);
}
Return Values
None
Error Codes
The following table lists the error codes along with its corresponding error messages:
Error Code | Error Message | Description |
---|---|---|
1 | UNKNOWN_ERR | The statement failed for database reasons not covered by any other error code. |
2 | DATABASE_ERR | The operation failed because the actual database version was not what it should be. For example, a statement found that the actual database version no longer matched the expected version of the Database or DatabaseSync object, or the Database.changeVersion() or DatabaseSync.changeVersion() methods were passed a version that doesn't match the actual database version. |
3 | TOO_LARGE_ERR | The statement failed because the data returned from the database was too large. The SQL "LIMIT" modifier might be useful to reduce the size of the result set. |
4 | QUOTA_ERR | The statement failed because there was not enough remaining storage space, or the storage quota was reached and the user declined to give more space to the database. |
5 | SYNTAX_ERR | The statement failed because of a syntax error, or the number of arguments did not match the number of ? placeholders in the statement, or the statement tried to use a statement that is not allowed, such as BEGIN, COMMIT, or ROLLBACK, or the statement tried to use a verb that could modify the database but the transaction was read-only. |
6 | CONSTRAINT_ERR | An INSERT, UPDATE, or REPLACE statement failed due to a constraint failure. For example, because a row was being inserted and the value given for the primary key column duplicated the value of an existing row. |
7 | TIMEOUT_ERR | A lock for the transaction could not be obtained in a reasonable time. |
For more information, refer SQL Error Codes
Platform Availability
Available on all platforms* except for SPA in Windows Phone 7.5 and windows Phone 8 browsers, for desktop IE8, IE9, IE10 browsers.*Dummy Implementation on Mobile Web.
voltmx.db.openDatabase
This API allows you to open the specified version of a database. This is an asynchronous API.
Syntax
voltmx.db.openDatabase(dbname,version,displayName, estimatedSize, passphrase)
Input Parameters
Parameter | Description |
---|---|
dbname [String] - Mandatory | Specifies the actual name of the database that you want to open. |
version [String] - Mandatory | Specifies the version of the database that you want to open. |
displayName [String] - Mandatory | Specifies the display name of the database that you want to open. |
estimatedSize [Number] - Optional | Specifies the approximate size of the database in bytes.> Note: This parameter is applicable only on the SPA platform. |
passphrase
This is applicable for iOS and Android
iOS
passphrase[Array] - Optional
In iOS, this argument is used to specify Pragma statements (Array) to encrypt database.
Usage
- To link the SQLCipher library, extract the KAR file with -sqlcipher option. After the extraction, pass the passphrase for the SQL engine to encrypt the database.
perl extract.pl /Users/PLATFROM/Downloads/voltmxappipad.KAR –sqlcipher
Note: For more information on this parameter and Pragma statements, see https://www.zetetic.net/sqlcipher/sqlcipher-api/.
Android
passphrase [String] - Optional
In Android, this argument is used to specify password (String) to encrypt database.
The developer needs to enable Support SQL DB Encryption (FIPS) option in VoltMX Iris > Project Settings > Native > Android section in order to support database encryption using passphrase.
Windows 10
A free version of the sqlite library is available to support encryption. Therefore a license is not needed and you do not need to copy the zip files.
Important:
The database will not be encrypted in the following conditions:
1. If Support SQL DB Encryption (FIPS) option is enabled and empty string is passed as passphrase.
2. If Support SQL DB Encryption (FIPS) option is not enabled ,passphrase will be ignored and database is non encrypted.
3. If passphrase is not passed.Important: Encrypted and non-encrypted databases cannot be interchangeably opened using this API.
Important: The other Web SQL APIs operate on encrypted DB seamlessly if the
databaseObjectId
passed to them is opened usingvoltmx.db.openDatabase()
API with passphrase.Important: The framework does not store the passphrase argument to
voltmx.db.openDatabase()
API, it is responsibility of application developer to secure the password.
Example
//The below function will invoke openDatabase
function openDatabase() {
var dbName = "voltmxtestDB";
var version = "1.0";
var displayName = "demo web SQL Database";
var estimatedSize = 5 * 1024 * 1024; //5*1024*1024 indicates 5 MB
//Note: Use only one of the following passphrases depending on platform
//Passphrase is string in case of android.
var passphrase = "samplepassword";
//Passphrase is pragma array in case of iOS.
passphrase = ["PRAGMA key = 'old passphrase';"];
var databaseObjectId = voltmx.db.openDatabase(dbName, version, displayName, estimatedSize, passphrase);
//databaseObjectId contains the unique ID of the database
}
Return Values
Return Value | Description |
---|---|
databaseObjectId [userdata] | Returns the unique ID of the database. The identifier is userdata ( platform specific instance) and is not specifically String. Developers must not rely on the type of the identifier. |
Platform Availability
Available on all platforms(dummy implementation on MobileWeb) except for SPA in desktop IE8, IE9, and IE10 browsers.
Using the Pre Bundled Database
Bundling: For information about how to bundle a database, refer to the Pre Bundling the Files.
Accessing: The voltmx.io.FileSystem.getDatabaseDirectoryPath API returns the path where voltmx.db.openDatabase API opens a specified database file.
You need to copy pre bundled database files using the voltmx.io.FileSystem.copyBundledRawFileTo API to the path returned by voltmx.io.FileSystem.getDatabaseDirectoryPath API and then you can read or edit a pre bundled database information using the voltmx.db.openDatabase API just by opening database using the file name.
//Example for copying and opening the pre bundled database
//The destination file name can be different from the source.
var destFilePath = voltmx.io.FileSystem.getDatabaseDirectoryPath()+”test.db”;
var fileObj = null;
try{
var file = new voltmx.io.File(destFilePath);
//copyBundledRawFileTo API overrides the destination file with new one.
//Hence check before copying
if(!file.exists()){
fileObj = voltmx.io.FileSystem.copyBundledRawFileTo(dbName, destFilePath);
}else{
fileObj = file;
alert("File is already available");
return;
}
} catch(e) {
voltmx.print(“Exception “+e);
}
if(fileObj == null){
voltmx.print(“Copy failed”);
}else{
voltmx.print(“Copy Success”);
}
//Opening the copied DB using openDatabase API
dbObject = voltmx.db.openDatabase("test.db", "1.0", "Prebundled SQL Database", 5 * 1024 * 1024);
voltmx.db.readTransaction
This API allows you to read a specified transaction. This API creates a SQLTransaction object for read-only transactions.
When you invoke this API, it returns immediately and asynchronously reads the transaction.
Important: You can only read queries using this API. The voltmx.db.readTransaction API results in a SYNTAX_ERR in case of DML commands in the SQL statement. DML commands are not supported in this API.
Important: The table names and column names are case sensitive.
Syntax
voltmx.db.readTransaction(dbaseObjectId,TransactionCallback,TransactionErrorCallback,
SuccessCallback)
Input Parameters
Parameter | Description |
---|---|
dbaseObjectId [String] - Mandatory | Specifies the unique ID of the database. |
TransactionCallback [Function] - Mandatory | Specifies the callback function that contains the transactions.For example:function callback(dbId){//Code} |
TransactionErrorCallback [Function] - Optional | Specifies the callback that must be executed if there is an error in executing the transaction. This callback function is used to roll back the updates to the database.For example:function errorCallback(SQLError){//Code} |
SuccessCallback [Function] - Optional | Specifies the callback that must be executed if the transaction is successful.For example:function successCallback(){//code} |
Example
//The below function specifies the callback function that contains the transactions.
function myTransactionCallback(dbId) {
//SQLTransaction contains implementation of executeSql method
// invokevoltmx.db.executeSql method for sql trasaction
}
//The below function specifies the callback that must be executed if there is an error in executing the transaction. This callback function is used to roll back the updates to the database.
function myTransactionErrorCallback(SQLError) {
// proceed with the logic
}
//The below function specifies the callback that must be executed if the transaction is successful.
function mySuccessCallback() {
// proceed with the logic
}
//The below function will invoke readTransaction
function readTransaction() {
var dbName = "voltmxtestDB";
var version = "1.0";
var displayName = "demo web SQL Database";
var estimatedSize = 5 * 1024 * 1024; //5*1024*1024 indicates 5 MB
var databaseObjectId = voltmx.db.openDatabase(dbName, version, displayName, estimatedSize);
//databaseObjectId contains the unique ID of the database
voltmx.db.readTransaction(databaseObjectId, myTransactionCallback, myTransactionErrorCallback, mySuccessCallback);
}
Return Values
None
Platform Availability
Available on all platforms* except for SPA for desktop IE8, IE9, IE10 browsers.*Dummy Implementation on Mobile Web.
voltmx.db.sqlResultsetRowItem
This API returns the row available at the specified index. If there is no such row, then the API returns null for JavaScript.
Important: The table names and column names are case sensitive.
Syntax
voltmx.db.sqlResultsetRowItem(transactionID,SQLResultSet,index)
Input Parameters
Parameters | Description |
---|---|
transactionID [String] - Mandatory | Specifies the unique ID of the transaction. |
SQLResultSet [Array of JS Objects] - Mandatory | Specifies the name of the SQL result set. |
index [Number] - Mandatory | Specifies the index from which the row is to be retrieved. |
Example
//The below function specifies the callback function that must be executed when the execution of the SQL statement is a success also invokes sqlResultsetRowItem.
function sql_success(transactionId, resultset){
//logic to process the resultset
for (var i=0; i<resultset.length; i++){
var rowItem =voltmx.db.sqlResultsetRowItem(transactionId,resultset, i);
alert("empID:" + rowItem["empID"] + " empName:" + rowItem["empName"] + " depID:" + rowItem["depName"]);
}
}
//The below function specifies the callback function that must be executed when the execution of the SQL statement is a failure.
function sql_errorCallBack(err){
alert("Error processing sql statement error code=" + err["code"]);
}
Return Values
Return Value | Description |
---|---|
rowitem [Array of Objects] | Returns the row item at the specified index |
null/nil | Returns null/nil if there is no row available at the specified index |
Platform Availability
Available on all platforms* except for SPA for desktop IE8, IE9, IE10 browsers.*Dummy Implementation on Mobile Web.
voltmx.db.transaction
This API allows you to execute the specified transaction on the given database. When you invoke this API, it returns immediately and asynchronously executes the transaction.
This is an asynchronous API. This API creates an SQLTransaction
object.
Important: The table names and column names are case sensitive.
Syntax
voltmx.db.transaction(dbaseObjectId,transactionCallback,transactionErrorCallback,
successCallback)
Input Parameters
Parameter | Description |
---|---|
dbaseObjectId [String] - Mandatory | Specifies the unique ID of the database |
transactionCallback [Function] - Mandatory | Specifies the callback function that contains the transactions.For example:function callback(dbId){ //SQLTransaction contains implementation of executeSql method // invoke database.executesql method for sql trasaction } |
transactionErrorCallback [Function] - Optional | Specifies the callback that must be executed if there is an error in executing the transaction. This callback function is used to roll back the updates to the database.For example:function errorCallback(SQLError){//write code here} |
successCallback [Function] - Optional | Specifies the callback that must be executed if the transaction is successful.For example:function successCallback(){//code here}When the transaction is successful, this callback is executed along with the callback function of the voltmx.db.executeSql API. |
Example
//The below function specifies the callback function that contains the transactions.
function myTransactionCallback(dbId) {
//SQLTransaction contains implementation of executeSql method
// invokevoltmx.db.executeSql method for sql trasaction
}
//The below function specifies the callback that must be executed if there is an error in executing the transaction. This callback function is used to roll back the updates to the database.
function myTransactionErrorCallback(SQLError) {
// proceed with the logic
}
//The below function specifies the callback that must be executed if the transaction is successful.
function mySuccessCallback() {
// proceed with the logic
}
//The below function will invoke transaction
function transaction() {
var dbName = "voltmxtestDB";
var version = "1.0";
var displayName = "demo web SQL Database";
var estimatedSize = 5 * 1024 * 1024; //5*1024*1024 indicates 5 MB
var databaseObjectId = voltmx.db.openDatabase(dbName, version, displayName, estimatedSize);
//databaseObjectId contains the unique ID of the database
voltmx.db.transaction(databaseObjectId, myTransactionCallback, myTransactionErrorCallback, mySuccessCallback);
}
Return Values
None
Platform Availability
Available on all platforms* except for SPA for desktop IE8, IE9, IE10 browsers.*Dummy Implementation on Mobile Web.