I have solved this issue. There was problem in binding parameter inside the library (iimext.js). I am posting the modified code here so that people need not solve it again.
I have commented old code for reference purpose.
A small change in approach now.
In earlier code, parameter was passed as param=[{name:"paramname1",value:"paramvalue1"},{name:"paramname2",value:"paramvalue2"},...]
In my modified code, I use param={paramname1:paramvalue1,paramname2:paramvalue2,...}
Similar change is required in query function also.
My code is here
Code: Select all
iimSqlite.prototype.exec = function(sql, params)
{
//this.dbConn.executeSimpleSQL(sql);
var stmt = this.dbConn.createStatement(sql);
if (typeof(params) =="object")
{
var bp;
var _params = stmt.newBindingParamsArray();
if(typeof(params.length)=="undefined")
{
bp = _params.newBindingParams();
for(var prm in params) bp.bindByName(prm, params[prm]);
_params.addParams(bp);
}
else
{
alert("error");
}
I have solved this issue. There was problem in binding parameter inside the library (iimext.js). I am posting the modified code here so that people need not solve it again.
I have commented old code for reference purpose.
A small change in approach now.
In earlier code, parameter was passed as param=[{name:"paramname1",value:"paramvalue1"},{name:"paramname2",value:"paramvalue2"},...]
In my modified code, I use param={paramname1:paramvalue1,paramname2:paramvalue2,...}
Similar change is required in query function also.
My code is here
//for (var i = 0, j = params.length; i < j; i++)
//{
// var bp = _params.newBindingParams();
// bp.bindByName(params[i].name, params[i].value);
// _params.addParams(bp);
//}
stmt.bindParameters(_params);
}
stmt.execute();
stmt.finalize();
}
//params: {name1: value1,name2:value2,...}
iimSqlite.prototype.query = function(sql, params)
{
var stmt = this.dbConn.createStatement(sql);
var results = new Array();
if (typeof(params) =="object")
{
var bp;
var _params = stmt.newBindingParamsArray();
if(typeof(params.length)=="undefined")
{
bp = _params.newBindingParams();
for(var prm in params) bp.bindByName(prm, params[prm]);
_params.addParams(bp);
}
else
{
}
}
var colNames = new Array();
var i = 0;
while(1)
{
try
{
var colName = stmt.getColumnName(i++);
colNames.push(colName);
}
catch(e)
{
break;
}
}
try
{
while(stmt.executeStep())
{
var aRow = new Object();
for (var i = 0, j = colNames.length; i < j; i++)
{
aRow[colNames[i]] = stmt.row[colNames[i]];
}
results.push(aRow);
}
}
catch(aError)
{
iimDisplay("Error: " + aError.message);
}
stmt.finalize();
if (results.length == 0)
{
return null;
}
else if (results.length == 1)
{
return results[0];
}
return results;
}