从Android HTML资产创建SQLite表

时间:2011-09-21 12:41:05

标签: android

我试图在android中使用HTML在sqlite中创建一个表,但它无法正常工作

示例HTML在这里

<!DOCTYPE html>
<html>
<head>
<title>Contact Example</title>

<script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8">

// Wait for PhoneGap to load
//
//document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap is ready
//
function onDeviceReady() {
    var db = openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
    db.transaction(populateDB, errorCB, successCB);
}

// Populate the database 
//
function populateDB(tx) {
     tx.executeSql('DROP TABLE IF EXISTS DEMO');
     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

// Transaction error callback
//
function errorCB(tx, err) {
    alert("Error processing SQL: "+err);
}

// Transaction success callback
//
function successCB() {
    alert("success!");
}

</script>
</head>
<body onload="onDeviceReady()">
<h1>Example</h1>
<p>Database</p>
</body>
</html>

Android 2.2 我无法在android中看到任何数据库创建。请一些建议

3 个答案:

答案 0 :(得分:4)

我认为您的数据库是在android的缓存目录中创建的,这就是为什么无法进行的 看见。所以使用WebView的设置方法,并使缓存启用也给WebView的 然后,您的缓存目录的SQLite数据库路径将使用您的数据库。

如果我错了,请告诉我。

编辑:看看这个,

第1步:创建WebView

步骤2.获取webSettings,然后设置数据库路径。该路径应该是数据库的路径,即/path/path/your_package_name/

appView.setWebChromeClient(new WebClient(this));
WebSettings settings = appView.getSettings();
            settings.setJavaScriptEnabled(true);
            settings.setJavaScriptCanOpenWindowsAutomatically(true);
            settings.setDatabaseEnabled(true);
            settings.setDatabasePath("/data/data/<database path>/app_database");

步骤3:创建WebChromeClient,并覆盖onExceededDatabaseQuota方法。首次打开应用程序时会调用此方法,因为最初没有数据库设置。这将允许您在Java中设置配额。由于这是测试代码,我只是在这里抛出一个任意值。

final class WebClient extends WebChromeClient {
     Context mCtx;
           WebClient(Context ctx)
            {
             mCtx = ctx;
             }

         public void onExceededDatabaseQuota(String url, String databaseIdentifier,
          long currentQuota, long estimatedSize,
          long totalUsedQuota,WebStorage.QuotaUpdater quotaUpdater)
          {
                 Log.d(LOG_TAG, "We exceeded the quota");
              quotaUpdater.updateQuota(100000);
          }
     }

编辑:有关详细信息,请查看here

感谢。

答案 1 :(得分:0)

在root设备上转到:

  1. DDMS
  2. 文件资源管理器
  3. 数据 - &gt;数据
  4. 包名称
  5. app_databases
  6. 此处“app_databases”包含“Databases.db”文件,其中包含其他数据库文件。

答案 2 :(得分:-2)

WebView能够通过javascript代码调用java代码。尝试这个解决方案怎么样?