Javascript openDatabase在Android PhoneGap应用程序中创建错误

Javascript openDatabase在Android PhoneGap应用程序中创建错误,javascript,android,sqlite,cordova,Javascript,Android,Sqlite,Cordova,我用HTML5和JavaScript(包括JQTouch)构建了一个基本的手机应用程序,然后用PhoneGap将其转化为Android应用程序(经历了多次创伤后,PhoneGap和Windows计算机似乎相处得不太好) 该应用程序在Chrome中运行良好,但在Android模拟器上,LogCat中显示以下错误: 06-07 21:38:51.711: DEBUG/WebCore(204): Console: ReferenceError: Can't find variable: openDat

我用HTML5和JavaScript(包括JQTouch)构建了一个基本的手机应用程序,然后用PhoneGap将其转化为Android应用程序(经历了多次创伤后,PhoneGap和Windows计算机似乎相处得不太好)

该应用程序在Chrome中运行良好,但在Android模拟器上,LogCat中显示以下错误:

06-07 21:38:51.711: DEBUG/WebCore(204): Console: ReferenceError: Can't find variable: openDatabase line: 9 source: file:///android_asset/www/handicap.js
这是指Disability.js中的以下行:

db = openDatabase('Handicaps', '1.0', 'Handicaps', 65536);
这段代码的大背景是:

// initialise all important functions
$(document).ready(function(){
$('#newrace form').submit(saveRace);
$('#newrace form').submit(setTitle);
$('#enterhandicaps form').submit(savePrediction);
$('#enterhandicaps form').submit(refreshEntries);
$('#calcraces').click(raceList);
// create database to hold data on predicted and actual times
db = openDatabase('Handicaps', '1.0', 'Handicaps', 65536);
db.transaction(
    function(transaction) {
        transaction.executeSql(
            'CREATE TABLE IF NOT EXISTS predictions (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,racename TEXT NOT NULL, runner TEXT NOT NULL, prediction INTEGER, start TEXT, finish TEXT, position TEXT);'
        );
        transaction.executeSql(
            'CREATE TABLE IF NOT EXISTS races (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,racename TEXT NOT NULL, date TEXT, distance REAL);'
        );
        transaction.executeSql(
            'CREATE TABLE IF NOT EXISTS autocompletion (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,runner TEXT NOT NULL, value TEXT,racename TEXT NOT NULL);'
        );
    }
);
}
);
当看到其他人在stackoverflow上有类似的问题时,我尝试了只使用2.2以下的Android版本的建议,但这没有帮助。还有其他建议吗? 可能是我错过的一些非常明显的事情,因为我对这一点完全陌生。
如果有帮助,web浏览器表单中应用程序的完整代码位于

我想这是在试图打开文件”file:///android_asset/www/handicap.js" 与数据库通常为//data/data//database/dbfile(通常无扩展名)的情况相反

请发布更多代码


我想这是您使用的opendatabase。

您能以应用程序格式与所有对phonegap.js等的引用共享您的应用程序代码吗?另外,我没有看到您使用窗口对象的代码。根据phonegap API,使用
openDatabase()
的正确方法是
var db=window.openDatabase()
。此外,如果您还可以提及您正在使用的pg版本,也会有所帮助。

在WebChromeClient对象中重写OneExceededDatabaseQuota方法

    @Override
    public void onExceededDatabaseQuota(String url, String databaseIdentifier,
            long currentQuota, long estimatedSize, long totalUsedQuota,
            WebStorage.QuotaUpdater quotaUpdater) {
        Log.d("test", "onExceededDatabaseQuota : " + "  currentQuota=" + currentQuota
                + "   estimatedSize=" + estimatedSize + "   totalUsedQuota=" + totalUsedQuota);
        quotaUpdater.updateQuota(estimatedSize * 2);
    }

谢谢你,欧文。当数据库在浏览器中运行良好时,我不明白为什么会出现这个问题,但是——只有在尝试使用PhoneGap将其制作成应用程序后,问题才出现了——从错误消息中看起来,好像它不理解openDatabase是一个命令。我已经在上面的问题中添加了一些代码,以防对我有所帮助。嗨,威尔伯,我为我的反应太慢而道歉。我正在使用PhoneGap 0.9.5。。。。继续:我不确定如何以“应用程序格式”共享应用程序代码(我完全不熟悉Java和应用程序),也找不到生成的文件中的哪个文件引用了phonegap.js-你知道该文件通常位于项目的哪个子目录中吗?谢谢