Cordova Sqlite插件没有像在文档中那样添加扩展名.db吗?

时间:2014-06-18 17:52:00

标签: ios sqlite cordova cordova-plugins

我们正在测试Cordova Sqlite plugin以确定它是否符合我们对特定应用的需求。到目前为止,我们的简单测试工作得很好。但是,我们坚持这一点。创建数据库时,文档说明:

  

注意:数据库文件是使用.db扩展名创建的。

事实上,在我们的测试中,数据库已创建,以后可以在没有任何扩展的情况下找到并读取。输出完全匹配我们的命名。例如,在这种情况下:

var _dbName = 'testDB';
var _db = window.sqlitePlugin.openDatabase({name: _dbName});

正如文档所示,生成的文件的名称恰好是testDB,而不是testDB.db

我们的测试已在iOS模拟器上进行。我担心的是这种行为不可靠,并且会在其他平台/硬件上发生变化。我目前无法在Android上进行测试。

更多背景......

我关注的具体问题是,一个平台可能希望.db记录在案,而另一个平台可能不会。它可能成为问题的原因是我们打算使用预先填充的Sqlite数据库(由应用程序移动到openDatabase之前的适当存储位置)。因此,打包数据库的命名方案会决定这种情况。

对于未来的读者,请注意......(2014年8月4日)

这个插件的最新版本使这个问题没有实际意义。正如他们的发行说明中所述,Android不再添加.db扩展名,这使得此插件的行为在不同平台上更加一致。从他们的发行说明开始,截至编辑之日:

  

现在为Android版本删除了自动“.db”数据库文件扩展名,以便与iOS和& WP(8)版本

2 个答案:

答案 0 :(得分:0)

我在 android 中使用此插件。无法告诉您它是否添加了.db。但我可以向你保证,它在Android上工作得很好。 Android也使用了与您在问题中提到的完全相同的方式。

var _dbName = 'testDB';
var _db = window.sqlitePlugin.openDatabase({name: _dbName});

答案 1 :(得分:0)

因此,在查看SQLitePlugin.m时,open:方法有...

 NSMutableDictionary *options = [command.arguments objectAtIndex:0];
 NSString *dbname = [self getDBPath:[options objectForKey:@"name"]];

...这表明数据库名称是您传递给它的任何内容。我没有看到他们附加了一个' db'扩展插件中的任何位置。我不相信sqlite3_open()会增强名称,因此我非常确定您引用的文档不正确。