PhoneGap + jQuery accès Mobile HTML5 problème de base de données Sqlite sous Android 2.1

Je suis en train d'essayer d'accéder à HTML5 de base de données lorsque j'ai été la construction d'une Application Android à l'aide de PhoneGap + jQuery Mobile. Il est étrange que le code suivant permet d'obtenir différents résultats. Il peut obtenir des résultats corrects dans Galaxy S 2.2 (chris, lulu, chris), mais en Cliq TX (Android 2.1) l'application écrasés (la dernière alerte est createTable()), et dans l'Émulateur 2.3 l'application s'est écrasé à la première alerte. J'ai tiré de la base de données et a trouvé qu'il est correctement créé. Je pense qu'il est difficile d'expliquer ces problèmes, pourquoi de tels de simples codes sont la cause de beaucoup de problèmes? Dose quelqu'un succès sur l'accès à la base de données?

Vous en remercie d'avance.

    function init() {
alert('init()');
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
if (!window.openDatabase) {
alert('Local Databases are not supported.');
} else {
db = window
.openDatabase("YCHW", "1.0", "YCHW", 200000);
}
dropTable();
createTable();
insertData();
selectData();
}
function dropTable(){
alert('dropTable()');
db.transaction(
function (transaction) {
transaction.executeSql("DROP TABLE measurements;", [], nullDataHandler, errorHandler);
}
);
console.log("Table 'measurements' has been dropped.");
// location.reload();
}
function createTable(){
alert('createTable()');
db.transaction(
function (transaction) {
transaction.executeSql('CREATE TABLE IF NOT EXISTS measurements(id INTEGER NOT NULL PRIMARY KEY, user TEXT NOT NULL, date TEXT NOT NULL, height INTEGER NOT NULL, weight INTEGER NOT NULL, bmi REAL NOT NULL, abnormal INTEGER NOT NULL);', [], nullDataHandler, errorHandler);
}
);
console.log("Table 'measurements' has been created.");
}
function insertData(){
alert('insertData()');
db.transaction(
function (transaction) {
var data = ['1','chris','2000-02-22 00:00:00.000','170','60', '20', '0'];
transaction.executeSql("INSERT INTO measurements(id, user, date, height, weight, bmi, abnormal) VALUES (?, ?, ?, ?, ?, ?, ?)", [data[0], data[1], data[2], data[3], data[4], data[5], data[6]]);
data = ['2','lulu','2000-02-22 00:00:00.000','170','60', '20.12', '0'];
transaction.executeSql("INSERT INTO measurements(id, user, date, height, weight, bmi, abnormal) VALUES (?, ?, ?, ?, ?, ?, ?)", [data[0], data[1], data[2], data[3], data[4], data[5], data[6]]);
data = ['3','chris','2222-02-22 00:00:00.000','170','60', '20.12', '1'];
transaction.executeSql("INSERT INTO measurements(id, user, date, height, weight, bmi, abnormal) VALUES (?, ?, ?, ?, ?, ?, ?)", [data[0], data[1], data[2], data[3], data[4], data[5], data[6]]);
}
);
console.log("Data has been inserted.");
}
function selectData(){
alert('selectData()');
db.transaction(
function (transaction) {
transaction.executeSql('SELECT * FROM measurements;', [], dataSelectHandler, errorHandler);
}
);
console.log("Data has been selected.");
}
function dataSelectHandler(transaction, results){
alert('dataSelectHandler()');
for (var i=0; i<results.rows.length; i++) {
var row = results.rows.item(i);
var measurement = new Object();
measurement.id   = row['id'];
measurement.user = row['user'];
alert(measurement.user);
}
}
function nullDataHandler(){
alert('nullDataHandler()');
console.log("nullDataHandler()");
}
function errorHandler(transaction, error){
alert('errorHandler()');
if (error.code==1){
// DB Table already exists
alert('DB Table already exists');
} else {
// Error is a human-readable string.
console.log('Oops.  Error was '+error.message+' (Code '+error.code+')');
alert('Oops.  Error was '+error.message+' (Code '+error.code+')');
}
return false;
}

OriginalL'auteur ThinkChris | 2011-02-16