Gebruik sqlite manager om met sqlite database te werken. Wat kunt u doen met het systeem met behulp van rootrechten in SqLite

MV-framework ondersteunt MySQL-DBMS en SQLite. Hieronder vindt u de technologie voor het werken met de database SQLite-gegevens, dat compact is en snel overdraagbaar is van de ene server naar de andere, terwijl het toch over alles beschikt noodzakelijke capaciteiten voor een modern DBMS.

MV werkt met SQLite met behulp van de PDO-bibliotheek. Op de meeste servers is het ingeschakeld, maar als de database niet start vanwege het ontbreken van een stuurprogramma, kunt u lezen over het instellen ervan. SQLite slaat alle informatie op in één bestand "userfiles/database/sqlite/database.sqlite".

Om een ​​databasebestand te openen om met tabellen te werken, moet u de add-on installeren Mozilla-browser Firefox heet SQLite Manager. Met de add-on kunt u op dezelfde manier met de database werken als phpMyAdmin voor MySQL. https://addons.mozilla.org/ru/firefox/addon/sqlite-manager/

Wanneer de add-on is geïnstalleerd, moet u SQLite Manager starten en het bestand selecteren de benodigde basis gegevens "gebruikersbestanden/database/sqlite/database.sqlite". Nadat u het databasebestand met SQLite Manager heeft verbonden, verschijnt er een lijst met tabellen in de linkerkolom.

Om te creëren nieuwe tafel je moet op klikken bovenste menu“Tabel -> Tabel aanmaken”, waarna een venster wordt geopend voor het invoeren van tabelvelden.

Om naar een reeds gemaakte tabel te gaan, klikt u eenvoudig op de tabelnaam in de linkerkolom. Bovenaan de tabbladen ziet u de structuur van de tabel en de lijst met tabelrecords.

Wanneer u dubbelklikt op een record in de tabel, wordt een venster geopend waarin u de velden van het record kunt bewerken.

Over het algemeen verschilt het werken in SQLite Manager niet veel van het werken in phpMyAdmin voor MySQL. U kunt ook tabellen en indexen beheren, directe query's uitvoeren en triggers maken. Al het werk gebeurt met slechts één bestand, dat vervolgens van de lokale server naar het werkende bestand wordt gekopieerd. Tegelijkertijd is het belangrijk om niet te vergeten schrijfrechten in te stellen voor het databasebestand en de map waarin het zich bevindt. Afhankelijk van de serverconfiguratie kunnen de rechten zijn: 777, 770, 775 en andere.

PDO SQLite instellen

Als het PDO-stuurprogramma voor SQLite is aangesloten, kunt u informatie over de stuurprogrammaversie zien als u de functie phpinfo() aanroept. Als deze informatie niet beschikbaar is, betekent dit dat de driver niet is aangesloten en moet worden ingeschakeld in de PHP-instellingen.

De map PHP-bibliotheken (extensies) moet de bestanden php_pdo_sqlite.dll en php_sqlite3.dll bevatten.

In het php.ini-bestand moet u de regels voor het verbinden van deze bibliotheken verwijderen van commentaar, waarna u de webserver opnieuw moet opstarten.

Na het herstarten van de server zou informatie over het verbinden van het PDO-stuurprogramma voor SQLite moeten verschijnen in phpinfo(), zoals in de schermafbeelding hierboven.

SQLite is een database die enigszins lijkt op MySQL. Fundamenteel verschil SQLite van andere databases is dat de gehele database één bestand is. Als binnen MySQL-database ergens in de wildernis van de server wordt opgeslagen en niet beschikbaar is voor overdracht, dan is in SQLite alles schandalig eenvoudig: één bestand - één database.

Uiteraard moet de server de SQLite-driver ondersteunen (net als elke andere database), maar in de regel zijn daar nu geen problemen mee.

Met SQLite kunt u zoals gewoonlijk met de database werken met behulp van SQL, waarbij u tabellen, velden, enz. maakt. Over het algemeen kunnen we zeggen dat SQLite op geen enkele manier inferieur is aan de gebruikelijke MySQL, met uitzondering misschien van meer langzaam werk met “zware” SQL-query’s voor het bijwerken van gegevens (invoegen en bijwerken). Maar nogmaals, dit is voor sites met een hoge belasting.

Een groot voordeel van SQLite is het gemak van draagbaarheid. Een bestand kopiëren - wat is eenvoudiger? U hoeft zich geen zorgen te maken over back-ups, zoals in MySQL hoeft u geen gebruiker met een wachtwoord op de server aan te maken, u hoeft de database zelf niet aan te maken. Met SQLite nemen we het gewoon en gebruiken het.

Om met de database te werken in PHP is beter gebruik PDO - PHP Data Objects - dit is de zogenaamde. een abstractie die één enkele interface biedt voor het werken met verschillende databases. In theorie kun je met PDO naar elke database overschakelen zonder de SQL-query's te wijzigen, bijvoorbeeld van MySQL naar SQLite. Alleen de verbindingsparameters veranderen.

Op deze manier maakt SQLite verbinding via PDO. Hiervoor is niets nodig, aangezien PDO zelf al in PHP is opgenomen, en de SQLite-driver meestal ook op servers is opgenomen.

Maar voordat u begint met programmeren, moet u de basis zelf maken. Voor MySQL is er bijvoorbeeld phpMyAdmin, waarmee u kunt uitvoeren diverse operaties. Er zijn ook soortgelijke ontwikkelingen voor SQLite, maar ik zal laten zien hoe dit kan worden gedaan Firefox-browser. Om dit te doen, hoeft u alleen de add-on te installeren.

Om deze add-on aan het hoofdbestand toe te voegen FireFox-menu(“hamburger”), klik op Bewerken en sleep het pictogram naar het menu.

Dit is geïnstalleerd en u kunt het gebruiken.

Laten we eerst creëren nieuwe basis gegevens. In SQLite is dit het geval apart bestand, die de extensie .sqlite zal hebben. SQLite Manager zal u vragen om de map op te geven waar dit bestand zal worden opgeslagen. Selecteer of maak nieuwe catalogus. Voor ons maakt dit nog niet zoveel uit. Als gevolg hiervan wordt een sqlite-bestand met een nieuwe database gemaakt.

Dit bestand kan overal naartoe worden verplaatst (en hernoemd) en vervolgens worden geopend met de menuopdracht Databases - Verbind database.

Nu moet u een tabel (of tabellen) in de database maken.

SQLite Manager maakt automatisch servicetabellen aan sqlite_XXX. We raken ze niet aan en ze storen ons niet.

Een tabel in de database is waar de gestructureerde informatie. De tabel moet een set velden bevatten met de opgegeven eigenschappen. Het veld kan bijvoorbeeld een geheel getal zijn - voor gehele getallen, of tekst - voor tekst. Het aantal velden kan willekeurig zijn en wordt alleen bepaald door de taak van de webmaster.

Laten we bijvoorbeeld een tabelpagina's met velden hebben

  • Identiteitskaart - uniek nummer(automatisch verhogen)
  • naaktslak- koppeling
  • tekst- vrije tekst
  • hits- aantal weergaven

Nadat de tabel is gemaakt, let op het blok ‘SQL-instructie die dit object heeft gemaakt’. Het bevat een SQL-query die kan worden gebruikt om een ​​tabel te maken. Het kan handig zijn als u via PHP een tabel in de database moet maken.

Op het tabblad Bekijken en zoeken kunt u de tabel bewerken. Laten we bijvoorbeeld twee lijnen maken waar het veld naaktslak zal thuis zijn en contact opnemen. Dit worden twee pagina's: thuis En website/contactpersoon.

Veld hits bevat een paginaweergaveteller. De tekst kan van alles zijn.

Dat is alles, de basis is klaar, nu kun je hem gebruiken.

Laten we de taak instellen. Laten we een eenvoudige website hebben die wordt weergegeven korte link(slug) bijbehorende tekst en aantal views.

Als we dit doen op lokale server en laat de site vervolgens in de map staan sqlite. Er zit een submap in db, waar we onze pagina's.sqlite.

We kunnen routering uitvoeren zoals beschreven in het vorige artikel. Bestand.htaccess

AddDefaultCharset UTF-8 Opties -Indexen RewriteEngine op RewriteBase /sqlite/ RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule (.*) /sqlite/index.php?$1

IN index.php De routing zelf wordt in één regel beschreven:

$pagina = ($p = sleutel($_GET)) ? $p: "thuis";

  • sluit de basis aan
  • we maken daarin een selectie per $page
  • de ontvangen gegevens weergeven
Ik heb het algoritme opzettelijk vereenvoudigd om de PHP-code niet ingewikkelder te maken.

Er zijn twee opties om met de database te werken. De eerste is native PHP-code. Het is niet erg ingewikkeld, maar de overvloed aan parameters is een beetje vervelend. Daarom is de tweede optie het gebruik van extra wrapperbibliotheken. Met hen wordt de code beknopter.

Ik zal de index.php-code in de eerste versie geven:

setAttribute(BOB::ATTR_DEFAULT_FETCH_MODE, BOB::FETCH_ASSOC);

$sql ="SELECT * VAN pagina's WAAR slug=:pagina LIMIT 1"; $sth = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));.

$sth->execute(array(":pagina" => $pagina));

$rows = $sth->fetchAll();

print_r($rijen); // voer hier gegevens uit ) catch(Exception $e) ( echo $e->getMessage(); ) # einde van bestand

Voor de tweede optie heb ik een php-bibliotheek van de site labaka.ru gebruikt, die ik in een submap heb geplaatst

libr

index.php-code:

In dit voorbeeld wordt verschillende tekst weergegeven voor verschillende adressen en de weergaventeller werkt. Als u een nieuwe pagina wilt toevoegen, hoeft u deze alleen maar in de database aan te maken. Voor het gemak kunt u in SQLite Manager de database rechtstreeks vanuit de sitemap verbinden.

Er zijn een paar belangrijke punten om hier op te merken.

Allereerst moet al het werk met PDO in een try..catch-blok worden opgenomen. Foutmeldingen worden op deze manier opgevangen.

De gegevens die naar de SQL-query worden verzonden, moeten worden gevalideerd. Wanneer in PDO data prepare wordt gebruikt (PDO::prepare), wordt het ontsnappen van parameters geforceerd. Hiermee kunt u zich beschermen tegen mogelijke SQL-injecties.

  1. Wanneer een SQLite-database is verbonden en er geen databasebestand is, wordt dit automatisch aangemaakt. Dit is de basis voor het maken van een database onmiddellijk nadat deze is aangesloten en voor het maken van de benodigde tabellen met de eerste SQL-query (waarover ik hierboven schreef).
  2. Nog een opmerking over SQLite. Omdat de database een bestand is, kan deze rechtstreeks via een browser vanaf een URL worden gedownload. Daarom is het beter om de directory met SQLite-bestanden te beschermen via .htaccess met de regel Deny from all. Of plaats het hoger dan de hoofdmap van www.
  3. SQLite kan handig zijn voor kleine taken waarvoor een kleine database nodig is: tellers, stemmen, pagina-metagegevens, enz.
  4. Beschikbaarheid van Russische interface. Het is niet belangrijk, maar het is nog steeds handiger om met het programma in uw moedertaal te werken.
  5. Gemak. Ik zou niet lang in de interface willen rondsnuffelen op zoek naar de benodigde functies.

Omdat het onmogelijk is om de onmetelijkheid te vatten (ik heb het over het aantal aanbiedingen op de softwaremarkt), heb ik verschillende programma's geselecteerd die verschillen in hun mogelijkheden en deze in deze recensie opgenomen.

SQLite-databasebrowser

Prijs: gratis

Eenvoudig te gebruiken SQLite-databasebrowser. Omdat het hoofddoel van het programma het bekijken van gegevens is, is de functionaliteit dienovereenkomstig beperkt.

Met behulp van “SQLite Database Browser” kunt u:

  1. databasestructuur bekijken
  2. maak nieuwe tabellen met behulp van de wizard
  3. indexen maken
  4. gegevens in tabellen bekijken en eenvoudige SQL-query's uitvoeren (het programma loopt volledig vast bij het uitvoeren van query's zoals "CREATE TRIGGER...").

SQLite Database Browser begrijpt UTF-8 en biedt u de mogelijkheid om, indien nodig, de codering te wijzigen. Er is geen Russische interface.

SQLite3-manager LITE

Website van de fabrikant: http://www.pool-magic.net/sqlite-manager.htm

Prijs: Lite-versie is gratis .

Vergeleken met het vorige programma ziet “SQLite3 manager LITE” er functioneler uit. Naast het eenvoudig bekijken van gegevens in tabellen, kunt u ook triggers, indexen, weergaven, enz. bekijken en maken. Bovendien kunt u alle databasemetagegevens exporteren. In dit geval kunt u gegevensbestanden maken voor het exporteren van tabellen naar Paradox en Interbase.

Het programma probeerde ook zoiets als een visuele query-wizard te maken, vergelijkbaar met MS Access, maar naar mijn mening was deze poging niet succesvol.

De gratis versie heeft één nadeel: hij begrijpt geen gegevens die zijn gecodeerd in UTF-8. Het is uiteraard mogelijk om de databasecodering op te geven bij het openen van een bestand, maar UTF-8 is niet opgenomen in de lijst met coderingen. Ik heb nooit gezien hoe de volledige versie van het programma werkt, omdat... op de website van de fabrikant breekt de duivel zijn been. Er hangt een soort onbegrijpelijk javascript, dat onbegrijpelijke informatie weergeeft. Over het algemeen bestond de indruk dat het project met succes tot stilstand was gekomen.

SQLite-beheerder

Prijs: gratis

Vrij eenvoudig te gebruiken en functioneel programma. De gehele databasestructuur wordt gepresenteerd in de vorm van een boom met objecten, die u kunt aanpassen aan uw voorkeuren. Blijkbaar is SQLite Administrator geschreven met behulp van . Een van de extra functies van het programma is het genereren van Delphi-code uit een geselecteerd SQL-fragment. Voor het maken van tabellen, triggers, enz. Er worden handige wizards gebruikt. Bij het gebruik van dit programma was ik erg teleurgesteld door het gebrek aan mogelijkheid om normaal met UTF-8 te werken en, enigszins, maar toch enigszins, de indruk van de Russische interface bedorven - sommige inscripties passen niet in de toegewezen ruimte. Dus bij het testen gebruikte ik het standaard Engels.

Als het gebruik van UTF-8 niet belangrijk voor je is, download dan SQLite-beheerder - je zult er geen spijt van krijgen.

SQLiteManager

Prijs: Demoversie van $ 49 beschikbaar

SQLiteManager net als het vorige programma heeft het een redelijk gebruiksvriendelijke interface, begrijpt het UTF-8 perfect en heeft het daarnaast een aantal eigen “trucjes”. Waaronder:

  1. SQL-queryanalysator
  2. Database-integriteit controleren
  3. Database-optimalisatie
  4. De mogelijkheid om uw eigen scripts in het programma te gebruiken (naar mijn mening VBScript) om de bruikbaarheid te verbeteren.

Bijkomende functies van het programma zijn onder meer de mogelijkheid om rapporten over de database te genereren. De demoversie heeft zijn eigen strikte beperkingen voor zoekopdrachten. Alleen de eerste 20 records uit de set worden bijvoorbeeld opgenomen in de SELECT-resultaten. Qua gebruiksgemak werd de indruk enorm bedorven door het flikkeren bij het opnieuw tekenen van vensters. Mijn computer is niet zo oud, maar zelfs met 512 Mb knipperden de videovensters merkbaar.

SQLite Maestro

Prijs: vanaf $ 79 is er een proefversie voor 30 dagen .

Over het algemeen is de productlijn van SQL-meester heeft een groot aantal producten voor het beheren van een grote verscheidenheid aan databases, waaronder SQLite. De eerste indruk van het programma is een goed gemaakt speeltje voor contemplatie van buitenaf. Ja SQLite Maestro heeft alle functionaliteit die ik nodig had, een handige boom met databaseobjecten, de mogelijkheid om snel verschillende databaseobjecten aan te maken, enz., maar daarna is het vrij eenvoudig te gebruiken SQLite-beheerder het verschijnen van verwarrende menu's op meerdere niveaus met een heleboel verschillende opties die in principe in principe niet nodig zijn, op de een of andere manier wordt het griezelig om met dit programma te werken. Om deze reden is deze voor het gemak op 1 gezet. De prijs was ook niet bijzonder prettig: $ 79. Voor mij zou het beter zijn als ze de interface vereenvoudigden en het prijskaartje verlaagden tot minstens $ 50, dan zou ik erover kunnen nadenken om het te kopen.

SQLite-expert

Prijs: Persoonlijke versie - gratis, professionele versie - vanaf $38

Over het algemeen zijn er voor mij niet al te veel verschillen tussen de versies Persoonlijk van Professioneel . Om de klus te klaren SQLite-expert het duurde niet langer dan vijf minuten. Het programma heeft de volledige reeks functies die ik nodig had. Leuk vinden SQLiteManager-expert kan de integriteit van de database controleren, gegevens exporteren naar CSV of andere databaseformaten, heeft een handige SQL-editor, wizards voor het maken van tabellen, indexen, triggers, enz. Toegang tot de functies van het programma is iets moeilijker dan SQLite-beheerder , maar niet zozeer dat het je alleen maar afschrikt met je uiterlijk :). Over het algemeen heb ik gekozen SQLite Expert Persoonlijk .

Het was dit programma dat in deze fase van mijn werk met SQLite de beste resultaten liet zien, zowel in termen van kwaliteit en gebruiksgemak, als in termen van de set van alle noodzakelijke functies. Het is natuurlijk jammer dat de gratis beheerder niet weet wat UTF-8 is - misschien verbeteren ze het in de nieuwe versie, dan heroverweeg ik misschien mijn keuze.

Boekenplank

Naam:Databases en Delphi. Theorie en praktijk

Beschrijving Het boek is gebaseerd op materiaal uit lezingen en praktische oefeningen ontwikkeld door de auteur, en combineert theoretische grondslagen en praktische aspecten van het ontwikkelen van relationele databases.

Koop op liter383 wrijven.
Auteur: Anatoly Khomonenko, Vladimir Gofman
Naam:Werken met databases in Delphi
Beschrijving: bespreekt het gebruik van Delphi-tools voor het ontwikkelen van databasetoepassingen. De concepten van databases worden gegeven, de elementen worden gekarakteriseerd en de stadia van het ontwerpen van relationele databases worden beschreven, de technologie voor het ontwikkelen van informatiesystemen wordt geschetst, technieken voor het werken met gegevens, het maken van tabellen en databasetoepassingen en het voorbereiden van rapporten komen aan bod.
Koop op liter151 wrijven.

SQLite is een zeer populaire oplossing voor gegevensopslag en het Android-besturingssysteem is daarop geen uitzondering. Het systeem zelf en veel programma's gebruiken databases (bestanden met de extensie db) om informatie op te slaan. Wat voor soort gegevens zitten er in de databases, hoe je deze kunt bekijken, wat ermee gedaan kan worden en hoe dit een apparaat met superuser-rechten bedreigt - ik zal hierover in het artikel praten.

WAARSCHUWING

De auteur van het artikel is geen database-expert, noch is hij een SQLite-expert. Hij begrijpt dat sommige handelingen eenvoudiger kunnen worden uitgevoerd en is niet verantwoordelijk voor het ontstaan ​​van paranoia na het lezen van dit artikel. Het wordt ook sterk aanbevolen dat u vóór elke manipulatie een back-up maakt van de database die u aan het bewerken bent.

Werken met databanken

Om met databases te werken, is er veel verschillende software voor zowel computers als Android-apparaten. Applicatiedatabases bevinden zich meestal langs het pad /data/data/NAME PAKKET TOEPASSINGEN/databases. U kunt de naam van het pakket van de applicatie waarin u geïnteresseerd bent achterhalen door naar "Instellingen -> Applicaties -> Alles" te gaan en degene te selecteren die u nodig hebt (het tabblad "Over de applicatie" wordt geopend), of in het adres balk van de browser op de applicatiepagina in de Play Market.

Om in de map /data/data zelf te komen, heb je superuser-rechten nodig, en Root Explorer kan de inhoud uitstekend bekijken. Voor handiger werken, maar ook voor het bewerken van databases, kunt u bijvoorbeeld SQLite Debugger op het apparaat en DB Browser voor SQLite op de computer gebruiken. Om met databases te kunnen werken, moet BusyBox ook zijn geïnstalleerd met de sqlite3-applet. Alle manipulaties in het artikel worden uitgevoerd op een Nexus 5 met firmware 5.1. De databases die beschikbaar zijn voor weergave en bewerking, onderverdeeld in overeenkomstige programma's, kunnen op het apparaat worden bekeken in hetzelfde SQLite Debugger-programma door op het App-menu op het hoofdscherm te klikken. Dus hoe kunnen databases überhaupt nuttig voor u zijn en wat kan een aanvaller stelen? Laten we proberen het uit te zoeken.

INFO

Hartelijk dank aan demosfenus voor hulp bij het schrijven van SQL-query's.

accounts.db

Bevindt zich in /data/system/ of /data/system/users/0, afhankelijk van de firmwareversie, en bevat gegevens over alle accounts die op het apparaat zijn geregistreerd. Zoals je kunt zien in de schermafbeelding “Accounts.db-structuur” in de accounttabel, zijn er vijftien accounts van verschillende programma's aan mijn apparaat gekoppeld. Voor bijna allemaal zijn logins aangegeven; er zijn wachtwoorden (het gedeelte is verwijderd in de afbeelding) in gecodeerde vorm.


De authtokens-tabel bevat autorisatietokens van applicaties, alle Google-services, GMS en andere applicaties. Op het tabblad Extra's - extra sleutels en waarden, zoals GoogleUserId en een lijst met verbonden applicaties/services. Ik heb er ongeveer vijftig, waaronder Talk, YouTube, URL-verkorter, Wallet en andere.


Ik zal niet zeggen of een aanvaller wachtwoorden uit de database kan ontsleutelen, maar je kunt toegang krijgen tot services door de database eenvoudigweg naar een ander apparaat over te zetten. Laten we proberen zo'n experiment uit te voeren. Laten we een basis nemen van een Nexus 5-smartphone en een Nexus 7-tablet met een schoon systeem (vers geïnstalleerd 5.1 via flash-all.bat met de -w-toets en vervolgens root). Nadat u een schoon systeem hebt geladen, klikt u op 'Overslaan' wanneer u wordt gevraagd een account toe te voegen en installeert u vervolgens alle software die is opgegeven in accounts.db (WhatsApp ondersteunt officieel niet het werken op tablets, dus download de APK van Vareznikov of 1mobile.com). Vervolgens verwijderen we de database van de smartphone, plaatsen deze in de map /data/system/users/0 op de tablet en starten opnieuw op.

Na het laden zien we dat ons Google-account op het tabblad “Instellingen -> Accounts” verscheen en ons volledige toegang gaf tot alle bijbehorende programma’s. Mail, waarmee u uw accountwachtwoord kunt wijzigen, alle contacten met telefoonnummers, Google+, foto's, Google Drive-bestanden, notities, opgeslagen autorisaties in mobiel Chrome, enzovoort. Het enige onaangename moment is de niet-werkende Play Market, die aangeeft: “Er is een fout opgetreden tijdens het ontvangen van gegevens van de rpc:s-7:aec-7-server.” Door de fouttekst te googlen, kunt u deze eenvoudig reanimeren.

Andere applicaties gedroegen zich anders:

Conclusie: de laatste drie programma's zijn eenvoudig toegankelijk als je de gegevens uit accounts.db of de database zelf verwijdert.

mmssms.db

En hier is onze volledige sms-correspondentie. Het bevindt zich langs het pad /data/data/com.android.providers.telephony/databases/. Laten we proberen iets te veranderen. Laten we bijvoorbeeld een sms nemen van nummer 900 - dit is een informant van de Sberbank. In de schermafbeelding “SMS van Sberbank voor en na interventie in mmssms.db” aan de linkerkant, het laatste bericht: “ECMC6844 05/02/15 12:49 aankoop 450 roebel 210009 KARI Saldo: 3281,16 roebel.” Laten we het veranderen in het interessantere bericht dat rechts wordt weergegeven. Open hiervoor de database op het apparaat in SQLite Debugger. Wij zijn geïnteresseerd in de sms-tabel. Laten we de vereiste velden selecteren bij het verzoek:

> SELECTEER _id, thread_id, adres, datum, hoofdtekst VAN sms WAAR adres = 900

Het programma heeft een aanraakgeoriënteerde interface en de opdrachten zelf hoeven niet handmatig te worden geschreven. Ze worden automatisch ingevoegd nadat u het menu hebt opgeroepen door lang op de waarde te tikken of nadat u op het overeenkomstige woord in de bovenste regel hebt geklikt. De opdrachten worden weergegeven voor gebruiksgemak in de toekomst (bijvoorbeeld bij het werken met de console of het aanroepen van scripts met Tasker).


Dus door op SELECT te klikken en de vereiste velden aan te vinken, krijgen we een tabel met daarin het recordnummer, het nummer van de gespreksthread, het nummer van de afzender, de datum in UNIX-tijd en de daadwerkelijke tekst van de sms (zie screenshot “Waarden wijzigen in de mmssms .db-database”). Tik lang op het laatste item. Het programma biedt een keuze uit acties. Selecteer Waarde bijwerken. Voer de tekst in die we nodig hebben. Naar analogie met de vorige sms zullen we geld overmaken via een geldautomaat. Laten we de tekst wijzigen in "ECMC6844 05.05.15 10:18 creditering van 1000000r ATM 367700 Saldo: 1003731.16r." Het verzoek zelf ziet er als volgt uit:

> UPDATE sms SET body = "ECMC6844 05.05.15 10:18 creditering 1000000r ATM 367700 Saldo: 1003731.16r" WAAR _id = 196

Door op het driehoekje in de rechterbovenhoek te klikken, brengen we een wijziging aan in de lijn. Laten we de tijd aanpassen van de sms-tekst (05/05/15 10:18) naar het datumveld. U kunt elke UNIX-tijdconversie gebruiken, bijvoorbeeld de Online Unix-tijdstempelcalculator. De corresponderende datum is 1430810300. Voeg drie willekeurige cijfers voor milliseconden toe aan het einde en plak de resulterende waarde in het datumveld.

> UPDATE sms SET datum = 1430810300000 WAAR _id = 196

Twee opdrachten kunnen tot één worden gecombineerd door bewerkbare gegevensvelden in te voeren, gescheiden door komma's. Klik op de knop Commit rechtsonder en breng wijzigingen aan in de database. Laten we eens kijken wat er is gebeurd. In dezelfde schermafbeelding “SMS van Sberbank voor en na interventie in mmssms.db” aan de rechterkant kun je zien dat we nu rijke mensen zijn en meer dan een miljoen op onze rekening hebben staan. Soms moet u de gegevens wissen van de applicatie die SMS verwerkt om de wijzigingen door te voeren.


Laten we proberen een nieuwe sms aan de database toe te voegen. Om dit te doen hebben we twee tabellen in de database nodig: threads, waarin het volgnummer en de titel (laatste bericht) van het gesprek/de thread worden opgeslagen, en sms, waarin alle resterende informatie wordt opgeslagen. Er zijn hier twee mogelijke gebeurtenissen.

Optie 1: SMS toevoegen aan een bestaand gesprek. Om dit te doen, zoeken we in de sms-tabel naar het nummer van de gespreksthread - thread_id, overeenkomend met het nummer van de afzender. Zoals je kunt zien in de schermafbeelding ‘Waarden wijzigen in de mmssms.db-database’, is dit voor de Sberbank-informant het getal 7. Laten we een nieuwe regel toevoegen aan het gesprek dat in de vorige schermafbeelding is weergegeven. Vul de volgende velden in: thread_id - thread/conversatiethread; adres - afzendernummer; persoon - als de afzender in de contactenlijst staat; datum - tijdstip van aankomst van de sms; gelezen - 1 voor gelezen bericht, 0 voor ongelezen bericht; type - 1 inkomend, 2 uitgaand (er zijn ook 0 - verzonden en 4 - concept); body - berichttekst. Om een ​​nieuwe rij aan de tabel toe te voegen, moet u de volgende opdracht uitvoeren:

INSERT INTO sms (threadid, adres, datum, gelezen, type, body) VALUES (7, 900, strftime("%s", "nu")*1000, 1, 1, "Berichttekst")

De waarde strftime("%s", "now")*1000 wordt gebruikt om de huidige tijd in te voegen. Om een ​​specifieke datum en tijd in te voegen, moet u UNIX-tijd met dertien cijfers gebruiken. Het resultaat is te zien in de schermafbeelding “Voeg een nieuwe sms toe aan een bestaand gesprek.”


Optie 2: voeg een nieuwe sms toe en maak een nieuwe gespreksreeks aan. Als u naar analogie een regel toevoegt met een nieuw nummer +7123456789, dat niet in het adresboek staat en waarmee niet eerder is gecorrespondeerd, dan zullen de afzenders “Onbekende afzender” aangeven zonder het nummer te vermelden (zie screenshot “ Voeg een nieuwe sms toe en maak een nieuwe thread aan” aan de linkerkant). Om dit te voorkomen, moet je ook de threads en canonical_addresses-tabellen koppelen. Eerst voegen we een regel met een nummer toe aan canonical_addresses, waarbij we tegelijkertijd de aanwezigheid van dit nummer in de tabel controleren:

Voortzetting is alleen beschikbaar voor abonnees

Optie 1. Abonneer u op Hacker om al het materiaal op de site te lezen

Met een abonnement kunt u ALLE betaalde materialen op de site binnen de aangegeven periode lezen.