执行SQL查询后的Nativescript SQLite空值

执行SQL查询后的Nativescript SQLite空值,sqlite,nativescript,Sqlite,Nativescript,我有以下问题。我在“SQLite数据库浏览器”上设计了litesql数据库,一执行查询,我就被卡住了。我正在导出的函数正在导入并在nativescript vue中使用 Webpack还将以*.sqlite结尾的数据库复制到设备。我使用的android版本是9 我初始化数据库的方式是 var Sqlite = require("nativescript-sqlite"); var db; export function init() { if (!Sqlite.exists("t

我有以下问题。我在“SQLite数据库浏览器”上设计了litesql数据库,一执行查询,我就被卡住了。我正在导出的函数正在导入并在nativescript vue中使用

Webpack还将以*.sqlite结尾的数据库复制到设备。我使用的android版本是9

我初始化数据库的方式是

 var Sqlite = require("nativescript-sqlite");
 var db;

 export function init() {
    if (!Sqlite.exists("test.sqlite")) {
       Sqlite.copyDatabase("test.sqlite");
    }

   new Sqlite("test.sqlite", function(err, dbConnection) {
      if (err) {
          console.log(err);
          return;
      }
      db = dbConnection;
      console.log("connection successful")
   });
}
运行功能后,控制台显示“连接成功”。数据库位于应用程序文件夹的根目录中。这样它就可以拉数据库了? 此外,我还有一个问题。如何在生产中隐藏数据库

因此,我执行查询的方式是:

export function xxxx(**parameter**) {
    db.execSQL(
        "select random_id from random_table where some_id = ?",
        **parameter**,
        function(err, result) {
            console.log("result 1: " + result + " err: " + err);
        }
    );
}
输出为:

JS:“结果1:null错误:null”


我甚至不确定它是否以正确的方式打开数据库?

如果您只想从Android/iOS导出DB文件,您可以使用插件并传递正确的路径

Android

const filePath = application.android.context
            .getDatabasePath("your-db-name.sqlite")
            .getAbsolutePath();

new ShareFile().open({
    path: filePath,
});
对于iOS,路径将不同

iOS

const filePath = knownFolders.documents().getFile("your-db-name.sqlite").path;

new ShareFile().open({
    path: filePath,
});

尝试对select语句使用
db.get
。除了隐藏生产上的数据库是什么意思?如果您不希望DB成为源代码的一部分,那么您可能应该动态下载它,或者使用支持加密的付费版本的插件。@manoj是的,这正是我在生产中隐藏数据库的要求。当我使用db.get时,它告诉我,我的表不存在没有这样的表错误那么可能是因为它特定于您的数据库,可能是您可以用一个示例数据库文件创建一个游乐场示例。@Manoj我认为通过DB.execSQL创建数据库更好,因为我有数据库所需的全部创建代码。您认为我有机会在创建后将其保存为文件吗?这样问题就应该解决了。你说的把它保存为文件是什么意思?如果您正在谈论导出数据库,是的,这是可能的。从iOS模拟器复制DB post创建可能很容易。谢谢。我已经解决了使用预填充数据库的问题。我不需要再导出它了,但这也与其他功能相关。