2011-09-15 43 views
2

在這裏遇到一個主要的磚牆。我有一個數據庫的數據,我需要打包在一個SQL Lite數據庫。我也需要能夠從javascript的webview查詢這個數據庫。當試圖在javascript中查詢數據庫時,sql lite正在返回錯誤代碼1,並顯示「沒有這樣的表」消息。有任何想法嗎?Android從HTML5訪問嵌入式sql lite數據庫

這裏的js代碼

var database = window.openDatabase("testdb5", "", "main total", 1024 * 1024); 

     if (database) 
      document.write('got'); 

     database.transaction(function (tx) { 
      tx.executeSql("SELECT * FROM testtable", [], function (tx, result) { 
       for (var i = 0, item = null; i < result.rows.length; i++) { 
        item = result.rows.item(i); 
        document.write(item.name); 
       } 
      }); 
     }); 

下面是相關的Java:

WebSettings settings = myWebView.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setDatabaseEnabled(true); 

    //String databasePath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); 
    String databasePath ="/data/data/com.example.helloandroid/databases/"; 
    settings.setDatabasePath(databasePath); 

    myWebView.setWebChromeClient(new WebChromeClient() { 
      @Override 
      public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, 
        long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { 
        quotaUpdater.updateQuota(estimatedSize * 2); 
      } 
    }); 

吮吸,有沒有文件上這個!任何幫助深表感謝。

+0

您是否將資產(或res)文件夾中的數據庫複製到應用程序的數據庫文件夾?你可以使用api從Java內部訪問它嗎? –

+0

我以爲我做到了。我複製了本教程。 http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/查看它的任何問題? –

+0

確保該DataBaseHelper類中的copyDataBase方法在某個時刻被調用。 :)您可以使用adb shell檢查文件是否已被實際複製。 –

回答

0

這是沒有希望的。爲了後代的緣故,我決定簡單地創建一個javascript interface並調用與sql lite數據庫本地交互的方法。

此解決方案的唯一問題是我的代碼不會像便攜式一樣。我將不得不找出一些hacky的解決方案把它放在IOS上......這就是生活。