一次使用多个SQLite数据库

Sha*_*awn 8 apache-flex air sqlite adobe actionscript-3

我有2个SQLite数据库,一个从服务器(server.db)下载,一个用作客户端(client.db)的存储.我需要使用服务器数据库中的数据在客户端数据库上执行各种同步查询.

例如,我想删除client.db tRole表中的所有行,并重新填充表中的所有行server.db tRole.

另一个例子,我想删除client.db tFile表中fileID不在表中的所有行server.db tFile.

在SQL Server中,您只需在表前添加数据库名称.无论如何在SQLite中使用Adobe Air做到这一点?

The*_*heo 7

我只是看了一下AIR SQL API,它上面有一个attach方法,SQLConnection看起来就是你需要的.

我没有测试过这个,但根据文档它应该工作:

var connection : SQLConnection = new SQLConnection();

connection.open(firstDbFile);
connection.attach(secondDbFile, "otherDb");

var statement : SQLStatement = new SQLStatement();

statement.connection = connection;
statement.text = "INSERT INTO main.myTable SELECT * FROM otherDb.myTable";
statement.execute();
Run Code Online (Sandbox Code Playgroud)

该代码snipplet可能存在错误,我最近对AIR SQL API的处理不多.请注意,打开的数据库表open可以使用main.tableName,任何附加的数据库都可以给任何名称(otherDb在上面的示例中).


The*_*heo 5

可以在 SQLite 中同时打开多个数据库,但在使用 Flex/AIR 时是否可以做到这一点值得怀疑。在运行的命令行客户端中,您可以像在 MySQL 或 SQL Server 中一样ATTACH DATABASE path/to/other.db AS otherDb引用该数据库中的表。otherDb.tableName

可以使用语法database-name.table-name 来引用附加数据库中的表。

sqlite.org 上的附加数据库文档