sql >> Databasteknik >  >> RDS >> SQLite

Lagring av SQLite-databas med Android och Phonegap

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

Den här raden ovan tar bort tabellen med namnet DEMO varje gång du startar din PhoneGap-mobilapplikation

Och jag ville bara säga att jag älskar din kod. Det ger en mycket bra ledtråd om "vad man ska göra" för någons PhoneGap- eller Cordova-applikation. Det kommer till stor hjälp för alla som är på väg in i SQLites värld för första gången.

Din kod är mycket ren att läsa och förstå jämfört med koderna skrivna på Cordova/PhoneGap SQLite-plugins officiella webbplats på GitHub.

Min vän, som också arbetar som CTO för ett företag och har en hel del erfarenhet av SQLite, sa till mig att det inte är nödvändigt att stänga en SQLite-databasanslutning manuellt, och rekommenderade också starkt SQLite.

Och för alla andra som letar efter SQLite för PhoneGap/Cordova-information -

Låt oss säga att du har en tabell som heter mytable och vill lagra värdena "vacker" och "delfin"

När du vill utföra en operation på SQLite på en mobil enhet, till exempel en surfplatta eller telefon, kom ihåg att kalla det så här

Ha följande i din källkod

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

och lagra "vacker" inuti var1 och "delfin" inuti var2 och

gör följande sats för att köra SQL insert-satsen och spara sedan inuti enheten.

db.transaction(insertNewLine);   

Gör inte anrop direkt insertNewLine(tx)

Gör inte anrop direkt tx.executeSql( /* SQL INSERT STATEMENT */ ); i din JavaScript-källkod

Och inte inkludera värdena direkt i SQL-frågesatsen och kör sedan SQL-satsen som innehåller de värden du vill lagra i databasen.

Med andra ord är följande felaktigt

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

Ovanstående är felaktigt eftersom värdena du vill lagra, "beautiful" och "dolphin" ingår i SQL-satsen. De bör vara separata.

Följande är det korrekta sättet att köra INSERT SQL

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

och utför sedan hela databastransaktionen genom att inkludera följande i din JavaScript-kod

db.transaction(insertNewLine);

inte koden nedan

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

inte koden nedan heller

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

Och för att använda SELECT SQL-satsen, ha följande kod

// 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);
}

Och utför sedan databastransaktionen

db.transaction(viewthelastglory);

Om du försöker välja en från SQLite, WebSQL och IndexedDB, kom ihåg att jag sökte runt stackoverflow ett tag och fick reda på att

  • Ingen gillar IndexedDB på grund av dess komplexitet
  • IndexedDB är inkompatibelt med många typer och versioner av mobilt operativsystem
  • WebSQL har fasats ut av W3C
  • WebSQL returnerar 673 000 resultat men SQLite returnerar 1 800 000 resultat. IndexedDB returnerar 300 000 resultat på Google
  • Bland IndexedDB, SQLite och WebSQL är SQLite den enda med en officiell webbplats.

Följande kommando på kommandoraden när du är i katalogen för ditt Cordova-projekt kommer att installera SQLite-plugin-programmet i ditt Cordova-projekt

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


  1. Hur man modellerar för enkelt databasunderhåll

  2. Hur man skapar en lagrad procedur i SQL Server

  3. Vilka är några sätt att komma åt Microsoft SQL Server från Linux?

  4. Använda varningar och operatörer i SQL Server