我将在flash builder中编写应用程序,我希望能够将CSV数据导入Adobe Air / flashbuilder中的SQLite数据库。
我从未做过这样的事情,并不完全确定从哪里开始。 在重新插入之前,我想对数据进行一些操作。所以我真的需要知道我需要使用哪些步骤(类和函数)将CSV文件中的数据解析为可以在actionscript中操作的数组?
答案 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...
};