Change the DB query functions to return values of the actual types they are, rather than to return everything as strings -- this will prevent the need for parseInt on COUNT(*) values, etc. and is generally better
This will temporarily break the display of numeric fields on the interface side
This commit is contained in:
parent
936ef86584
commit
e8ed4281f9
|
@ -59,8 +59,9 @@ Scholar.DB = new function(){
|
||||||
var dataset = new Array();
|
var dataset = new Array();
|
||||||
while (statement.executeStep()){
|
while (statement.executeStep()){
|
||||||
var row = new Array();
|
var row = new Array();
|
||||||
|
|
||||||
for(var i=0; i<statement.columnCount; i++) {
|
for(var i=0; i<statement.columnCount; i++) {
|
||||||
row[statement.getColumnName(i)] = statement.getUTF8String(i);
|
row[statement.getColumnName(i)] = _getTypedValue(statement, i);
|
||||||
}
|
}
|
||||||
dataset.push(row);
|
dataset.push(row);
|
||||||
}
|
}
|
||||||
|
@ -110,14 +111,8 @@ Scholar.DB = new function(){
|
||||||
statement.reset();
|
statement.reset();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (sql.indexOf('SELECT COUNT(*)') > -1){
|
|
||||||
var value = statement.getInt32(0);
|
return _getTypedValue(statement, 0);
|
||||||
}
|
|
||||||
else {
|
|
||||||
var value = statement.getUTF8String(0);
|
|
||||||
}
|
|
||||||
statement.reset();
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -141,7 +136,7 @@ Scholar.DB = new function(){
|
||||||
if (statement){
|
if (statement){
|
||||||
var column = new Array();
|
var column = new Array();
|
||||||
while (statement.executeStep()){
|
while (statement.executeStep()){
|
||||||
column.push(statement.getUTF8String(0));
|
column.push(_getTypedValue(statement, 0));
|
||||||
}
|
}
|
||||||
statement.reset();
|
statement.reset();
|
||||||
return column.length ? column : false;
|
return column.length ? column : false;
|
||||||
|
@ -314,4 +309,27 @@ Scholar.DB = new function(){
|
||||||
|
|
||||||
return _connection;
|
return _connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function _getTypedValue(statement, i){
|
||||||
|
var type = statement.getTypeOfIndex(i);
|
||||||
|
switch (type){
|
||||||
|
case statement.VALUE_TYPE_INTEGER:
|
||||||
|
var func = statement.getInt32;
|
||||||
|
break;
|
||||||
|
case statement.VALUE_TYPE_TEXT:
|
||||||
|
var func = statement.getUTF8String;
|
||||||
|
break;
|
||||||
|
case statement.VALUE_TYPE_NULL:
|
||||||
|
return null;
|
||||||
|
case statement.VALUE_TYPE_FLOAT:
|
||||||
|
var func = statement.getDouble;
|
||||||
|
break;
|
||||||
|
case statement.VALUE_TYPE_BLOB:
|
||||||
|
var func = statement.getBlob;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return func(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user