数组值中的Javascript动态变量名(Appcelerator)

数组值中的Javascript动态变量名(Appcelerator),javascript,variables,dynamic,titanium,appcelerator,Javascript,Variables,Dynamic,Titanium,Appcelerator,我正在开发一个钛合金应用程序,并构建了一个函数来运行sqlite数据库查询并返回一个结果集(数组) 我不会费心过多地讨论泰坦宫的细节,因为它不会对我所面临的问题产生太大的影响 基本上,任何查询都可以使用此函数执行,因此,执行查询后,自然需要一个与特定数据库列名相对应的数据数组。这就是我的问题所在。按照钛合金系统的工作方式,我需要将结果放入结果数组中,如下所示: var resultSet = conn.execute('SELECT * FROM some_table WHERE parent

我正在开发一个钛合金应用程序,并构建了一个函数来运行sqlite数据库查询并返回一个结果集(数组)

我不会费心过多地讨论泰坦宫的细节,因为它不会对我所面临的问题产生太大的影响

基本上,任何查询都可以使用此函数执行,因此,执行查询后,自然需要一个与特定数据库列名相对应的数据数组。这就是我的问题所在。按照钛合金系统的工作方式,我需要将结果放入结果数组中,如下所示:

var resultSet = conn.execute('SELECT * FROM some_table WHERE parent = ?', parent);
    if (resultSet.isValidRow()) {
        result = {
            id: resultSet.fieldByName('id'),
            name: resultSet.fieldByName('name'),
            parent: resultSet.fieldByName('parent'),
            order: resultSet.fieldByName('order')
        };
    }
var resultSet = conn.execute(<!-- SQL IS IN HERE -->);
var fieldCount = resultSet.fieldCount();
var fields = [];
for(i=0;i<fieldCount;i++) {
    fields.push(resultSet.fieldName(i));
};
// At this point we have an array 'fields' which contains all the field names.

var results = [];
    while (resultSet.isValidRow()) {
    results.push({
// START OF PROBLEM
        for(i=0; i < fields.length; i++)
        {
            fields[i]: resultSet.fieldByName(fields[i]);
        }
// END OF PROBLEM
    });
    resultSet.next();
};
resultSet.close();
好的,就这样吧。但它不够有活力。如果要从具有不同字段的不同表中进行选择,会发生什么情况。id、姓名、父项和顺序显然不起作用

我试图做的是获取一个数组(我已经得到了),并使用这些值作为它们的名称,如下所示:

var resultSet = conn.execute('SELECT * FROM some_table WHERE parent = ?', parent);
    if (resultSet.isValidRow()) {
        result = {
            id: resultSet.fieldByName('id'),
            name: resultSet.fieldByName('name'),
            parent: resultSet.fieldByName('parent'),
            order: resultSet.fieldByName('order')
        };
    }
var resultSet = conn.execute(<!-- SQL IS IN HERE -->);
var fieldCount = resultSet.fieldCount();
var fields = [];
for(i=0;i<fieldCount;i++) {
    fields.push(resultSet.fieldName(i));
};
// At this point we have an array 'fields' which contains all the field names.

var results = [];
    while (resultSet.isValidRow()) {
    results.push({
// START OF PROBLEM
        for(i=0; i < fields.length; i++)
        {
            fields[i]: resultSet.fieldByName(fields[i]);
        }
// END OF PROBLEM
    });
    resultSet.next();
};
resultSet.close();
var resultSet=conn.execute();
var fieldCount=resultSet.fieldCount();
var字段=[];

对于(i=0;iYou几乎可以理解它,除非您试图在对象文本中迭代字段数组,这是完全无效的-在对象文本中只能有键值对

var resultSet = conn.execute(<!-- SQL IS IN HERE -->);
var fieldCount = resultSet.fieldCount;
var fields = [];
for(var i = 0; i < fieldCount;i++) {
    fields.push(resultSet.fieldName(i));
};

var results = [];
while (resultSet.isValidRow()) {
    for(var i=0; i < fields.length; i++) {
       results[i] = {};
       results[i][fields[i]] = resultSet.fieldByName(fields[i]);
    }
    resultSet.next();
};
resultSet.close();
var resultSet=conn.execute();
var fieldCount=resultSet.fieldCount;
var字段=[];
对于(变量i=0;i
试试这个

Ti.UI.backgroundColor= 'white';
var win= Titanium.UI.createWindow();


var db= Titanium.Database.open('MY_DB');

db.execute('CREATE TABLE IF NOT EXISTS USERS1 (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, PHONE_NUMBER, IL TEXT)');
db.execute('DELETE FROM USERS1');
db.execute('INSERT INTO USERS1(NAME, PHONE_NUMBER, IL) VALUES(?, ?, ?)', 'SALIH-1','1-SALIH', 'RIZE-1');
db.execute('INSERT INTO USERS1(NAME, PHONE_NUMBER, IL) VALUES(?, ?, ?)', 'AHMET-2','2-AHMET', 'RIZE-2');
db.execute('INSERT INTO USERS1(NAME, PHONE_NUMBER, IL) VALUES(?, ?, ?)', 'HAKAN-3','3-HAKAN', 'RIZE-3');
db.execute('INSERT INTO USERS1(NAME, PHONE_NUMBER, IL) VALUES(?, ?, ?)', 'GALIP-4','4-GALIP', 'RIZE-4');



var resultSet = db.execute('SELECT * FROM USERS1'); 
var fieldCount = resultSet.fieldCount();
var fields = [];
for(var i = 0; i < fieldCount;i++) {
    fields.push(resultSet.fieldName(i));
};

var i=0;
var results = [];
while (resultSet.isValidRow()) {
    results[i] = {};

    for (var j=0; j < fieldCount; j++) {
        results[i][fields[j]] = resultSet.fieldByName(fields[j]);
    };

    resultSet.next();
    i++;
};

// Get ALL DATA
alert(results);

// Get row 0
alert(results[0]);

// get row 0 - column Name
alert(results[0]['NAME']);

resultSet.close();

win.open();
Ti.UI.backgroundColor='white';
var win=tianium.UI.createWindow();
var db=tianium.Database.open('MY_db');
db.execute('CREATE TABLE IF NOT executes USERS1(ID INTEGER主键自动递增,NAME TEXT,PHONE_NUMBER,IL TEXT)');
db.execute('DELETE FROM USERS1');
db.execute('INSERT INTO USERS1(姓名、电话号码、IL)值(?、、?)'、'SALIH-1'、'1-SALIH'、'RIZE-1');
db.execute('INSERT INTO USERS1(姓名、电话号码、IL)值(?,,?)'、'AHMET-2'、'2-AHMET'、'RIZE-2');
db.execute('INSERT INTO USERS1(姓名、电话号码、IL)值(?,,?)'、'HAKAN-3'、'3-HAKAN'、'RIZE-3');
db.execute('INSERT INTO USERS1(姓名、电话号码、IL)值(?,?)'、'GALIP-4'、'4-GALIP'、'RIZE-4');
var resultSet=db.execute('SELECT*FROM USERS1');
var fieldCount=resultSet.fieldCount();
var字段=[];
对于(变量i=0;i
感谢您的回复Jacob-这比我的回答更有意义!不过我似乎仍然遇到了一个问题。行“fields[I]:resultSet.fieldByName(fields[I])出现了一个恼人的错误:“[ERROR]Script ERROR=表达式“results[I]”[undefined]的结果不是对象。at builder.js(第45行)。“。数据库肯定会被填充,就好像我用一个显示字段名、id和结果的简单警报替换了那一行一样。有什么可能是错误的吗?我清除了缓存/重建/等等,但仍然没有运气:(