繁体   English   中英

使用Appcelerator从SQLite导出CSV

[英]Export csv from SQLite using appcelerator

我是使用appcelerator来开发android应用程序的初学者。 我试图将存储在db(sqlite)应用中的所有数据导出到csv文件,但输出未显示所有数据。 我在代码中使用while和array。

btn_search.addEventListener('click',function(e) { 

var db = Ti.Database.install('../products.sqlite','products');
var dbName = db.execute('SELECT * FROM products WHERE doc_num ="'+doc_num.value+'"');

// option 2
while (dbName.isValidRow()) {
var Barcode1 = dbName.fieldByName('doc_num');
var ItemName1 = dbName.fieldByName('barcode');
var UOM1 = dbName.fieldByName('product_name');
var TOUM1 = dbName.fieldByName('rack_loc');
var TQTY1 = dbName.fieldByName('oum');
var TRACK1 = dbName.fieldByName('qty');
dbName.next();

// create csv
var dbName1 = dbName;

dbName1 = [ dbName.fieldByName('doc_num') , dbName.fieldByName('barcode') , dbName.fieldByName('product_name') , dbName.fieldByName('rack_loc') , dbName.fieldByName('oum') , dbName.fieldByName('qty')];

for(var i=0; i<dbName1.length !==0; i++)
{
    Ti.API.info(dbName1[i]);
    alert('you have "'+dbName1[i]+'" in your side');

}

 var outputFile = Titanium.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory, 'File_Product.csv');
    outputFile.write(dbName1); 

//alert("Output file = "+ op);

}

});

输出仅显示一个数据,即db中的最新数据。 它应该有3个数据。 但是只显示1个数据:DISK1 | 9789678606387 | 书1 | A100 | PCS | 12

可以帮助/建议我解决此问题。 谢谢

使用以下代码更新while循环

var main_array = [];    
while (dbName.isValidRow()) {    
    var Barcode1 = dbName.fieldByName('doc_num');
    var ItemName1 = dbName.fieldByName('barcode');
    var UOM1 = dbName.fieldByName('product_name');
    var TOUM1 = dbName.fieldByName('rack_loc');
    var TQTY1 = dbName.fieldByName('oum');
    var TRACK1 = dbName.fieldByName('qty');

    var single_item_array = [dbName.fieldByName('doc_num'),dbName.fieldByName('barcode'), dbName.fieldByName('product_name'), dbName.fieldByName('rack_loc'), dbName.fieldByName('oum'), dbName.fieldByName('qty')];

    for (var i = 0; i < single_item_array.length !== 0; i++) {
        Ti.API.info(single_item_array[i]);
        Ti.API.info("you have > " + single_item_array[i] + " in your side");

    }

    main_array.push(single_item_array);
    dbName.next();
}

if (main_array.length > 0) {
    var outputFile = Titanium.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory, 'File_Product.csv');
    outputFile.write(main_array);
}

上面的代码解决了您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM