Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t在Android中使用PhoneGap/Cordova访问预填充的SQLite数据库_Android_Sqlite_Cordova_Android Sqlite - Fatal编程技术网

Can';t在Android中使用PhoneGap/Cordova访问预填充的SQLite数据库

Can';t在Android中使用PhoneGap/Cordova访问预填充的SQLite数据库,android,sqlite,cordova,android-sqlite,Android,Sqlite,Cordova,Android Sqlite,我们正在尝试使用PhoneGap/Cordova创建一个移动应用程序。我们需要将此应用程序附带预填充的SQLite db。我们可以使用下面的代码复制数据库。但是,当我们尝试从应用程序中复制的数据库访问表时,会出现“无此类表”错误。有人能帮我们找出原因吗 我们使用下面的代码将数据库复制到data/data/package\u name/databases文件夹 try { File dbFile = getDatabasePath("Bee_dict.db");

我们正在尝试使用PhoneGap/Cordova创建一个移动应用程序。我们需要将此应用程序附带预填充的SQLite db。我们可以使用下面的代码复制数据库。但是,当我们尝试从应用程序中复制的数据库访问表时,会出现“无此类表”错误。有人能帮我们找出原因吗

我们使用下面的代码将数据库复制到data/data/package\u 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”:

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

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

我也面临同样的问题,但是上面的答案对我没有帮助,所以我写下我的经验,也许会有帮助

我通常使用一个名为me.rahul.plugins.sqlDB的Cordova插件

它是一个插件,用于将Cordova www文件夹中的文件复制到Android/iphone上的正确文件夹中

您必须首先使用以下方法安装插件:

$ cordova plugin add https://github.com/an-rahulpandey/cordova-plugin-dbcopy.git
然后在设备就绪事件上:

function onDeviceReady() {
    console.log(">device is ready");
    window.plugins.sqlDB.copy("mydb.sqlite", copySuccess, copyError);
}

要访问预填充的数据库,应首先复制www目录中的数据库文件

安装此插件并使用复制插件将数据库从www目录复制到设备中,然后使用访问数据库


另外,需要从www目录复制数据库,因为每个操作系统存储数据库的位置不同…

在jellybean和ics中工作正常,但在gingerbread中不工作。。这个插件非常好用。谢谢@KratosBala更新链接: