android - 如何使用电话间隙访问数据库

标签 android sqlite cordova

我是 Android PhoneGap 新手。我正在使用 native 应用程序存储和检索数据。我不知道如何显示从 native 检索到的数据到phonegap(HTML)页面。

有人可以指导我如何使用phonegap访问sqlite吗?

提前致谢。

最佳答案

您需要首先为 Phonegap 创建一个 Android 插件,通过它您将能够访问 native 代码,从而访问 native 数据库,如下所示

public class SqlitePlugin extends Plugin {

private static final String TAG = "SqlitePlugin";
private static final String CREATE_DB_ACTION = "createDatabase";
private static final String SHOW_DB_VALUES_ACTION = "showValues";

@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
    Log.i(TAG, "Plugin Called");
    PluginResult result = null;

    if (CREATE_DB_ACTION.equals(action)) {
        Log.d(TAG, "CREATE_DB_ACTION");
        DB _db = new DB(ctx);
        _db.insertValues();
    }
    else if (SHOW_DB_VALUES_ACTION.equals(action)) {
        Log.d(TAG, "SHOW_DB_VALUES_ACTION");

        JSONObject DBInfo = null;
        try {
            DBInfo = getDBValuesListing();

        } catch (JSONException e) {
            e.printStackTrace();
        }

        result = new PluginResult(Status.OK, DBInfo);

    }       
    else {
        result = new PluginResult(Status.INVALID_ACTION);
        Log.d(TAG, "Invalid action : " + action + " passed");
    }

    return result;
  }
}

之后创建一个像这样的 sqlite.js 文件

    function SqlitePlugin() {
};

SqlitePlugin.prototype.createDatabase = function(successCallback, failCallback) {

return PhoneGap.exec(successCallback, failCallback, "SqlitePlugin",
        "createDatabase", [ null ]);
};

SqlitePlugin.prototype.showValues = function(params, successCallback, failCallback) {
return PhoneGap.exec(successCallback, failCallback, 'SqlitePlugin', 'showValues',
        [ params ]);
};

PhoneGap.addConstructor(function() {
PhoneGap.addPlugin("SqlitePlugin", new SqlitePlugin());
});

在您的页面(index.html)中导入这个sqlite.js,然后最终使用这样的插件

function showValues() {
    window.plugins.SqlitePlugin.showValues('showValues',
            showValuesSuccessCallBack, showValuesFailCallBack);

}
function showValuesSuccessCallBack(e) {
    if (e.Rows.length > 0) {
        alert("Success");
        for (i = 0; i < e.Rows.length; i++) {
            alert("Id = " + e.Rows[i].id);
            alert("Number = " + e.Rows[i].number);
        }
    } else {
        alert("No values in Database");
    }
}

function showValuesFailCallBack(f) {
    alert("Failure");
}

请告诉我这是否适合您

关于android - 如何使用电话间隙访问数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9414633/

相关文章:

cordova - Angular 2 + Phonegap : how can they works together? 如何设置基本模板和工作 apk?

android - Ionic/Cordova 不更新 Android 版本代码

java - 如何在 android/dalvik 上动态加载 Java 类?

java - 具有自定义 View : Resize to wrap the view's content 的 AlertDialog

android - 在工具栏中更改边距和重力折叠标题

android - Phonegap 屏幕尺寸因状态栏高度而异?

java - 根据用户输入更改按钮行为

Sqlite - 如何转义双引号?

sql - 这个小于日期的查询有什么问题?

android - 如何从android中的spatialite数据库获取导出shapefile