如何将CSV文件中的数据导入Adobe Air应用程序?

时间:2011-01-24 03:54:20

标签: actionscript-3 sqlite csv import air

我将在flash builder中编写应用程序,我希望能够将CSV数据导入Adobe Air / flashbuilder中的SQLite数据库。

我从未做过这样的事情,并不完全确定从哪里开始。 在重新插入之前,我想对数据进行一些操作。所以我真的需要知道我需要使用哪些步骤(类和函数)将CSV文件中的数据解析为可以在actionscript中操作的数组?

2 个答案:

答案 0 :(得分:1)

我使用casalib来处理很多事情,包括加载。您可以使用标准的as3内容,但this使其更容易。查看CasaLoader

然后,您可以使用一些字符串拆分来提取行/列

sqlite的东西非常简单。请看一下这个链接:http://ntt.cc/2008/07/08/sqlite-example-for-adobe-air-working-with-local-sql-databases-with-source-code.html

你可以忽略mxml的东西

答案 1 :(得分:1)

[更新:我的回答假设HTML / Javascript AIR,而不是Flash / Actionscript。 AS3方面可能有更好的答案......]

您可以随时通过FileStream进行低级读取,并自行编写CSV解析器。我怀疑你会找到一个预先存在的库来将任意CSV输入到SQLite中,但也许我错了(我没看过)。

您想要为FileStream阅读器开始的基础知识就像这个示例代码,它在异步输入时读取一行。示例是从单独进程的STDOUT读取,但应该直接应用于FileStream。

this.process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, function(event) {
   // call into _stdoutHandler...
});

Foo.prototype._stdoutHandler = function() {
   var nBytes = this.process.standardOutput.bytesAvailable;
   var msg = this.process.standardOutput.readUTFBytes(nBytes);
   // The native process might send us partial lines, due to async IO.
   // Reconstruct the whole lines.
   this._sofar += msg;
   while (true) {
      var idx = this._sofar.indexOf("\n");
      if (idx < 0)
         break;
      if (idx > 0) { // skips blank lines
         var line = this._sofar.substring(0, idx);
         this._foundLine(line);
      }
      if (this._sofar.length > idx + 1) {
         this._sofar = this._sofar.substring(idx+1);
      } else {
         this._sofar = "";
      }
   }
   var lines = this._sofar.split(/\n/);
   if (lines.length > 1) {
      air.trace("programming error: we should have already handled all newlines");
   }
   this._sofar = lines[lines.length - 1];
};

Foo.prototype._foundLine = function() {
   // process a single line of input here...
};