【问题标题】:Execute imported sql file执行导入的sql文件
【发布时间】:2013-11-25 10:48:42
【问题描述】:

我正在我的 Javascript 文件中执行以下命令。 到目前为止没有插入任何表和数据。 如果我在导入的文件中一次只写 1 个查询,那么它可以正常工作,但是当我想执行导入文件“Chinook_Sqlite.sql”中存在的所有查询时,它不会执行任何操作。

请给我建议。谢谢..

   // Create sqlite database instance
   var sqlitedb = openDatabase("Chinook", "", "Chinook", ''); 
    // Import the sql file
    $.get("../Chinook_Sqlite.sql", function(content) {
       // Start Transaction
        sqlitedb.transaction(function (tx) { 
            // Start Execution 
            tx.executeSql(content);
        });
    });

【问题讨论】:

    标签: javascript sql sqlite


    【解决方案1】:

    您是否尝试在tx.executeSql(content); 调用之前检查内容变量?您异步调用它,尝试将其重写为:

      // Create sqlite database instance
       var sqlitedb = openDatabase("Chinook", "", "Chinook", ''); 
        // Import the sql file
        $.get("../Chinook_Sqlite.sql", function(content) {
           var scriptContent = content;
           // Start Transaction
            sqlitedb.transaction(function (tx) { 
                // Start Execution 
                tx.executeSql(scriptContent);
            });
        });
    

    【讨论】:

    • 当我有 console.log(content) 时,它会显示正确的查询
    • 实际上,正如 CL 所写,executeSql 仅适用于单个查询。您只需要逐行解析您的查询并在事务中单独执行。
    【解决方案2】:

    executeSql 执行单个 SQL 语句。

    您必须从文件中提取 SQL 语句并为每个语句调用 executeSql

    【讨论】:

    • 我需要在我的数据库中填充 10 个 lacs 数据。我无法单独提取它。建议我用某种方式..
    • 要提问,请使用“”按钮。
    • 我在当前的问题中写道,我知道它不适用于多个查询。它仅适用于单个查询,我需要实现它的方法,但我还没有找到解决方案。
    猜你喜欢
    • 2012-03-31
    • 2015-04-10
    • 2014-05-03
    • 2014-05-14
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2016-09-16
    相关资源
    最近更新 更多