2014-06-30 1 views
2

Je travaille application phonegap. J'avais fait la fonctionnalité se souvenir de moi dans mon application. donc si l'utilisateur a utilisé l'option se souvenir de moi. juste je redirige l'utilisateur à la page de courrier de la boîte de réception. mais la base de données est supprimée lorsque l'application se ferme et s'ouvre la deuxième fois. l'issue est la valeur de base de données non chargée dans ma boîte de réception. Je ne veux pas supprimer la base de données lorsque l'utilisateur ferme l'application sans se déconnecter. Aidez-moi, s'il vous plaît.Comment utiliser la base de données Sqlite dans l'application Phonegap IOS et Android

J'ai créé le corps de base de données onload = "init()"

function init() {  
    document.addEventListener("deviceready", onDeviceReady, false); 
    delete init; 
} 


function onDeviceReady() {  
    if(window.localStorage.getItem("remember") == null) 
    {   
    db = window.openDatabase("SampleDB","0.1","Name DB", 5000000); 
    db.transaction(createDB, errorDB, txSuccess); 
    } 

} 
+0

pouvez-vous nous montrer l'appel de fonction createDB(). Je ne suis pas sûr, mais mon sentiment est que la fonctionnalité window.localstorage ne sera valide que pour cette session. Ainsi, lorsque vous fermez cette application, les données de localStorage seront perdues. donc à chaque fois que vous ouvrirez l'application, la commande db.transaction (CreateDB .... sera exécutée et si CreateDB contient une instruction create table, elle sera exécutée.) Par conséquent, j'aimerais voir ce que fait la fonction createDB: – frank

+0

function createDB (tx) { tx.executeSql ("DROP TABLES EXISTS zergId"); tx.executeSql ("CREATE TABLE mytable (id entier, id_utilisateur, s_id, s_name, r_id, r_name, e_id, sujet, char_id, nom_car, g_id, g_name, parent_id INTEGER, is_viewed, is_parent, is_garbage, is_deleted, message, created_date) "); } Ceci est mon createDB(); – user2499653

+0

Juste j'ai utilisé seulement le document phonegap pour référence, alors j'ai créé comme ceci. le plugin sqlite, mais je ne vais pas installer le plugin, pouvez-vous me dire quelle est la bonne façon de gérer la base de données sqlite et son c orrect ou pas? ce que j'ai fait ma fonctionnalité. – user2499653

Répondre

2

Dans votre createDB() vous appelez avez une table DROP instruction SQL. Ainsi, chaque fois que vous ouvrez votre application, la table DROP et CREATE TABLE seront exécutées. Aussi j'ai remarqué que l'instruction DROP comme différent table "zergid" que l'instruction CREATE "mytable". Est-ce votre exigence?

function createDB(tx) { 
    tx.executeSql("DROP TABLE IF EXISTS zergId"); 
    tx.executeSql("CREATE TABLE mytable(id INTEGER, user_id , s_id , s_name, r_id , r_name, e_id , subject, char_id , char_name, g_id , g_name, parent_id INTEGER , is_viewed ,is_parent, is_garbage, is_deleted, message, created_date)"); 
} 

Si vous voulez créer la table que une fois vous pouvez utiliser le SINON EXISTE clause.

tx.executeSql("CREATE TABLE IF NOT EXISTS mytable(id INTEGER ... 

Espérons que cela aide.

+0

ok merci pour votre réponse en fait quand je démarre l'application j'ai utilisé cette requête comme ça, mais une erreur est survenue c'est pourquoi j'ai changé. Le nom de la table n'est pas un problème. Je viens de changer quand je publie cette commande. Je vais essayer ça. – user2499653

+0

Salut, Mon problème n'est pas résolu. La valeur de base de données n'a pas été chargée à nouveau. J'ai fait tous les changements. J'ai supprimé la requête de suppression et j'ai modifié la requête de création de table comme vos commentaires. quand je vais rediriger la base de données de la deuxième page non chargée correctement. – user2499653

+0

$ (document) .on ('pagebeforeshow', '#messageList', function() { checkPreAuth(); }); fonction checkPreAuth() { /* console.log ("checkPreAuth"); */ si (window.localStorage.getItem ("rappelez-vous") == "true") { si (window.localStorage.getItem ("nom d'utilisateur")! = undefined && window.localStorage.getItem ("mot de passe")! = undefined) { $ .mobile.changePage ("Inbox.html"); } $ ('# messageList'). Live ('pageshow', fonction (événement) { db.transaction (queryDB, errorCB); }); – user2499653

Questions connexes