2011-09-15 5 views
2

여기에 주요 벽돌 벽으로 달려 있습니다. SQL lite 데이터베이스에 패키지화해야하는 데이터베이스가 있습니다. 나는 또한 자바 스크립트에서 webview 에서이 데이터베이스를 쿼리 할 수 ​​있어야합니다. 자바 스크립트에서 데이터베이스를 쿼리 할 때 sql lite는 "no such table"메시지와 함께 오류 코드 1을 반환합니다. 어떤 아이디어?안드로이드 HTML5에서 임베디드 sql lite 데이터베이스에 액세스

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); 
      } 
    }); 

더 문서가이 거기에 없다는 것을 지지리 :

여기 여기에 관련 자바 년대 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); 
       } 
      }); 
     }); 

입니다! 어떤 도움이라도 대단히 감사합니다.

+0

애셋 (또는 res) 폴더의 데이터베이스를 앱의 데이터베이스 폴더에 복사 했습니까? 그리고 API를 사용하여 Java 내에서 액세스 할 수 있습니까? –

+0

나는 내가 그랬다고 생각했다. 나는이 튜토리얼을 복사했다. http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ 문제가 있습니까? –

+0

DataBaseHelper 클래스의 copyDataBase 메소드가 어느 시점에서 호출되는지 확인하십시오. :) adb 쉘을 사용하여 파일이 실제로 복사되었는지 확인할 수 있습니다. 의견을 읽은 후 –

답변

0

이것은 절망적입니다. 후자를 위해 간단히 javascript interface을 만들고 sql lite 데이터베이스와 상호 작용할 메서드를 호출하기로 결정했습니다.

이 솔루션의 유일한 문제점은 내 코드가 이식 가능하지 않다는 것입니다. 나는 IOS에 그것을 넣어 몇 가지 해키 솔루션을 찾아야 할 것입니다 ... 그런 삶입니다.

관련 문제