【问题标题】:Cordova Sqlite plugin is not adding the extension .db as it says in docs?Cordova Sqlite 插件没有像文档中所说的那样添加扩展名 .db?
【发布时间】:2014-06-18 17:51:59
【问题描述】:

我们正在测试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 扩展,这使得该插件的行为跨平台更加一致。从他们的发行说明中,截至本次编辑之日:

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

【问题讨论】:

    标签: ios sqlite cordova cordova-plugins


    【解决方案1】:

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

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

    ...这表明数据库名称是您传递给它的任何名称。我没有看到他们在插件的任何地方附加了“db”扩展名。我不相信 sqlite3_open() 会增强名称,所以我很确定您引用的文档不正确。

    【讨论】:

    • 是的,我想你明白了。我查看了getDBPath 方法和这一行:NSString *dbPath = [NSString stringWithFormat:@"%@/%@", appDocsPath, dbFile]; 证实了您自己的观察。 (我不知道为什么我没有想到看源码。)谢谢!
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的快速回复。因此,我关心的具体问题是,一个平台可能期望.db 记录在案,而另一个平台可能不会。这可能是一个问题的原因是我们打算使用预填充的 Sqlite 数据库(由应用程序移动到 openDatabase 之前的适当存储位置)。因此,打包数据库的命名方案将决定局势的成败。
    猜你喜欢
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多