SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Speicherung der SQLite-Datenbank mit Android und Phonegap

tx.executeSql('DROP TABLE IF EXISTS DEMO');

Diese Zeile oben löscht die Tabelle mit dem Namen DEMO jedes Mal, wenn Sie Ihre PhoneGap-Mobilanwendung starten

Und ich wollte dir nur sagen, dass ich deinen Code liebe. Es gibt einen sehr guten Hinweis darauf, was mit jeder PhoneGap- oder Cordova-Anwendung zu tun ist. Es wird jedem, der zum ersten Mal in die Welt von SQLite eintaucht, eine große Hilfe sein.

Ihr Code ist im Vergleich zu den Codes, die auf der offiziellen Website des Cordova/PhoneGap-SQLite-Plugins auf GitHub geschrieben wurden, sehr sauber zu lesen und zu verstehen.

Mein Freund, der auch als CTO eines Unternehmens arbeitet und viel Erfahrung mit SQLite hat, sagte mir, dass es nicht notwendig sei, eine SQLite-Datenbankverbindung manuell zu schließen, und empfahl SQLite ebenfalls sehr.

Und für alle anderen, die nach SQLite für PhoneGap/Cordova-Informationen suchen -

Nehmen wir an, Sie haben eine Tabelle namens mytable und möchten die Werte „beautiful“ und „dolphin“

speichern

Wenn Sie eine Operation auf dem SQLite eines mobilen Geräts wie einem Tablet oder Telefon ausführen möchten, denken Sie daran, es so zu nennen

Haben Sie Folgendes in Ihrem Quellcode

function insertNewLine(tx) 
{
   tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
}

und speichern Sie "beautiful" in var1 und "dolphin" in var2 und

Führen Sie die folgende Anweisung aus, um die SQL-Insert-Anweisung auszuführen, und speichern Sie sie dann im Gerät.

db.transaction(insertNewLine);   

Nicht rufen Sie direkt insertNewLine(tx)

auf

Nicht tx.executeSql direkt aufrufen ( /* SQL INSERT STATEMENT */ ); in Ihrem JavaScript-Quellcode

Und nicht Fügen Sie die Werte direkt in die SQL-Abfrageanweisung ein und führen Sie dann die SQL-Anweisung aus, die die Werte enthält, die Sie in der Datenbank speichern möchten.

Mit anderen Worten, das Folgende ist falsch

tx.executeSql('INSERT INTO mytable (word, meaning) values (beautiful, dolphin)');

Das Obige ist falsch, da die Werte, die Sie speichern möchten, „beautiful“ und „dolphin“, in der SQL-Anweisung enthalten sind. Sie sollten getrennt sein.

Das Folgende ist der richtige Weg, um INSERT SQL

auszuführen
tx.executeSql("INSERT INTO mytable (word, meaning) VALUES (?,?)", [ var1 , var2 ]);
 // Notice that the values you want to store, beautiful and dolphin
 // are separate from the SQL INSERT INTO statement

und führen Sie dann die gesamte Datenbanktransaktion durch, indem Sie Folgendes in Ihren JavaScript-Code einfügen

db.transaction(insertNewLine);

nicht der folgende Code

tx.executeSql("INSERT....."); // this will not save your values onto the device

auch nicht der unten stehende Code

insertNewLine(tx); // this will not save your values onto the device either.  

Und um die SELECT-SQL-Anweisung zu verwenden, verwenden Sie den folgenden Code

// Get all lines in the table
//
function viewthelastglory(tx)  
{
    tx.executeSql( 'SELECT * FROM CUSTOMTABLE', [], querySuccess, errorcode );
}

// Deal with the lines 
//
function querySuccess(tx, results) 
{
   var len = results.rows.length; var  queryresult = "all entries ";

   for (var i = 0 ; i < len ; i++)
   {
       queryresult =  queryresult +  

       " Row - " + i + 
       " Word - " + results.rows.item(i).word + 
       " Meaning - " + results.rows.item(i).meaning;
   }

// and now, you can use the queryresult variable to use the values   
}

function errorcode(errorhaha) 
{
    alert("Error Code " + errorhaha.code + " Error Message " + errorhaha.message);
}

Führen Sie dann die Datenbanktransaktion durch

db.transaction(viewthelastglory);

Wenn Sie versuchen, einen aus SQLite, WebSQL und IndexedDB auszuwählen, denken Sie bitte daran, dass ich eine Weile in Stackoverflow gesucht und das gelernt habe

  • Niemand mag IndexedDB wegen seiner Komplexität
  • IndexedDB ist mit vielen Arten und Versionen von mobilen Betriebssystemen nicht kompatibel
  • WebSQL wurde vom W3C abgelehnt
  • WebSQL gibt 673.000 Ergebnisse zurück, aber SQLite gibt 1800.000 Ergebnisse zurück. IndexedDB liefert 300.000 Ergebnisse bei Google
  • Unter IndexedDB, SQLite und WebSQL ist SQLite das einzige mit einer offiziellen Website.

Während Sie sich im Verzeichnis Ihres Cordova-Projekts befinden, installiert der folgende Befehl in der Befehlszeile das SQLite-Plugin in Ihrem Cordova-Projekt

cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin