android - 从 Android HTML 资源创建 SQLite 表

标签 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>

安卓 2.2 我看不到在 android 中创建的任何数据库。请一些建议

最佳答案

我认为您的数据库是在 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 .

谢谢。

关于android - 从 Android HTML 资源创建 SQLite 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7499899/

相关文章:

Android:如何更新build.gradle?

java - 我什么时候应该删除 OnCompleteListener?

android - CardView 在 RecyclerView 内部对齐

android - 初始化任务 PropertyGroup 时出错 : Not registered task PropertyGroup

android - 无法使用 GCM 在设备上接收消息

android - 使用 Firebase Cloud 函数获取当前日期和时间

java - 如何使用库“ Material 日历 View ”保存用户每天在EditText中输入的内容?

javascript - XMLHttpRequest 失败 : {statusText":Not Found","status::404,"responseURL":https://api. parse.com/1/users"Ionic + Parse

android - Android 2.3 上的主/详细流程模板

java - 调用适当的函数