微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在Android中使用PhoneGap / Cordova访问预先填充的SQLite数据库

我们正在尝试使用PhoneGap / Cordova创建移动应用.我们需要使用预先填充的sqlite数据库发送此应用程序.我们可以使用以下代码复制数据库.但是当我们尝试在我们的应用程序中从复制的DB访问表时,我们得到“No Such Table”错误.任何人都可以帮助我们确定原因吗?

我们使用以下代码数据库复制到data / data / package_name / databases文件夹.

   try
    {
        File dbFile = getDatabasePath("Bee_dict.db");
        if(!dbFile.exists()){
            this.copy("Bee_dict.db",dbFile.getAbsolutePath());
        }
     }
     catch (Exception e)
     {
     e.printstacktrace();
     }


//And our copy function:

   void copy(String file, String folder) throws IOException
    {
     File CheckDirectory;
     CheckDirectory = new File(folder);


     String parentPath = CheckDirectory.getParent();

     File filedir = new File(parentPath);
     if (!filedir.exists()) {
         if (!filedir.mkdirs()) {
             return;
         }
     }

        InputStream in = this.getApplicationContext().getAssets().open(file);
        File newfile = new File(folder);
        OutputStream out = new FileOutputStream(newfile);


        byte[] buf = new byte[1024];
        int len; while ((len = in.read(buf)) > 0) out.write(buf, 0, len);
        in.close(); out.close();
    }

的index.html
以下代码用于打开和访问数据库

 function onDeviceReady()
 {
  db = window.openDatabase("Bee_dict", "1.0", "Bee_dict", 20000);
  tx.executesql('SELECT * FROM data WHERE word_id = ?', [1], querySuccess_deFinition, errorCB);
 }

科尔多瓦版 – 2.9

谢谢.

解决方法:

首先,可以尝试使用下一个DB文件名:

0000000000000001.db

对于加载文件

File dbFile = getDatabasePath(".0000000000000001db");

DB文件需要位于下一个路径中:

yourProyect/assets/0000000000000001.db

我建议使用“sqlitePlugin”:

SQLitePlugin GitHub

在“onDeviceReady()”函数中我使用:

if(!dbCreated){
    db = window.sqlitePlugin.openDatabase("0000000000000001", "1.0", "My Database", -1);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐