Hvordan åbner man en .SQLITE fil? Gennemgang af programmer til administration af SQLite-databaser.

Den tredje del er finesser og funktioner.

Denne del er et sammensurium af alle mulige SQLite-funktioner. Jeg har samlet her (efter min mening) de vigtigste emner, uden at forstå hvilke det er umuligt at forstå SQLite nirvana.

Da der igen er en masse information, vil artiklens format være som følger: en kort introduktion til interessant emne og et link til hjemmesiden, hvor detaljerne er. Siden er desværre på engelsk.

Brug af SQLite i flertrådede applikationer
SQLite kan bygges enkelt-trådet (kompileringsmulighed SQLITE_THREADSAFE = 0).

I denne udførelsesform kan den ikke bruges samtidigt fra flere tråde, da der overhovedet ikke er nogen synkroniseringskode. For hvad? For hæsblæsende fart.

Du kan kontrollere, om der er multithreading ved hjælp af opkaldet sqlite3_threadsafe(): hvis det returnerede 0, så er det single-threaded SQLite.

Som standard er SQLite bygget med trådunderstøttelse (sqlite3.dll).

Der er to måder at bruge multi-threaded SQLite på: serialiseret og multi-thread.

Serialiseret(du skal angive flaget SQLITE_OPEN_FULLMUTEX når du åbner en forbindelse). I denne tilstand kan tråde foretage SQLite-kald på enhver måde, de vil, uden begrænsninger. Men alle opkald blokerer hinanden og behandles strengt sekventielt.

Multi-tråd(SQLITE_OPEN_NOMUTEX). I denne tilstand kan du ikke bruge den samme forbindelse samtidigt fra flere tråde (men det er tilladt samtidig brug forskellige forbindelser forskellige vandløb). Denne tilstand bruges normalt.

Dataformat
Grundlag SQL data ite kan gemme (tekst)data i UTF-8 eller UTF-16.

Kit API-kald består af opkald, der modtager UTF-8 ( sqlite3_XXX) og opkald, der modtager UTF-16 ( sqlite3_XXX16).

Hvis datatypen for grænsefladen og forbindelsen ikke stemmer overens, udføres konverteringen i farten.

Brug altid UTF-8.

UNICODE support
Som standard - ingen support. Du skal oprette din egen kollation (sammenligningsmetode) via sqlite3_create_collation .
Og definer dine indbyggede funktioner lide(), øvre(), nedre() igennem www.sqlite.org/c3ref/create_function.html.

Og nogle mennesker bygger allerede SQLite DLL'er med det.

Datatyper og værdisammenligning
Som allerede nævnt giver SQLIte dig mulighed for at skrive enhver værdi til enhver kolonne.

En værdi inde i databasen kan tilhøre en af følgende typer opbevaring ( opbevaringsklasse):
NUL,
HELTAL(optager 1,2,3,4,6 eller 8 bytes),
ÆGTE(flydende kommanummer, 8 bytes i IEEE-format),
TEKST(streng i databasedataformat, normalt UTF-8),
BLOB(binære data, gemt "som de er").

Sorteringsrækkefølgen for værdier af forskellige typer er:
- NUL mindst af alt (inklusive andre NUL);
- HELTAL Og ÆGTE mindre end nogen TEKST Og BLOB, sammenlignes aritmetisk med hinanden;
- TEKST mindre end nogen BLOB, sammenlignes med hinanden baseret på deres sammenstilling;
- BLOB-er sammenlignes med hinanden igennem memcmp().

SQLite udfører implicitte typekonverteringer i farten flere steder:
- når du indtaster en værdi i en kolonne (kolonnetypen angiver konverteringsanbefalingen);
- når man sammenligner værdier med hinanden.

Værdier BLOB Og NUL er altid indtastet i enhver kolonne "som de er".

Til kolonne TEKST værdier TEKST værdier indtastes "som de er" HELTAL Og ÆGTE blive strenge.
Til kolonne NUMERISK, HELTAL tal skrives "som de er", og strenge bliver til tal, hvis _de kan_ (det vil sige, at den omvendte "tabsfri" konvertering er tilladt).
Til kolonne ÆGTE reglerne ligner HELTAL(NUMERISK); forskellen er, at alle tal er repræsenteret i flydende kommaformat.
Til kolonne INGEN værdier indtastes "som de er" (denne type bruges som standard, medmindre en anden er angivet).

Når man sammenligner værdier forskellige typer Yderligere typekonvertering kan udføres mellem hinanden.

Når man sammenligner et tal med en streng, hvis strengen kan konverteres til et tal "tabsfrit", bliver det et tal.

Jeg vil her bemærke, at der i SQLite kan være så mange, du vil, i et unikt indeks NUL værdier (Oracle er enig i dette og MS SQL er uenig).

Database i hukommelsen
Hvis du er på opkald sqlite3_open() videregive filnavnet som ":hukommelse:", så vil SQLite oprette en forbindelse til en ny (ren) database i tankerne.

Denne forbindelse kan absolut ikke skelnes fra forbindelsen til databasen i filen i henhold til brugslogikken: den samme SQL sæt kommandoer

Desværre er der ingen måde at åbne to forbindelser til den samme database i hukommelsen.

UPD: Det viser sig, at det allerede er muligt at åbne to forbindelser til en database i hukommelsen.

Rc = sqlite3_open("fil:memdb1?tilstand=hukommelse&cache=delt", &db);

TILFØJ DATABASE "fil:memdb1?mode=hukommelse&cache=delt" SOM aux1;

Sammenføjning af flere databaser samtidigt
Brug opkaldet for at åbne en forbindelse til databasen sqlite3_open().

Når som helst vi kan åben forbindelse tilslutte op til 10 flere databaser via SQL kommando TILKNYT DATABASE.

Sqlite3_open("foo.sqlite3", &db); // åbn en forbindelse til databasen i filen "foo.sqlite3" sqlite3_exec(&db, "VÆGTIG "bar.sqlite3" AS bar", ...); // tilføje "bar.sqlite3"

Nu er alle databasetabeller i filen db1.sqlite3 transparent tilgængelige i vores forbindelse.

For at løse navnekonflikter skal du bruge join-navnet (hovedbasen kaldes "hoved"):

VÆLG * FRA main.my_table UNION VÆLG * FRA bar.my_table

Intet forhindrer dig i at vedhæfte til databasen ny base i hukommelsen og bruge den til caching osv.

Sqlite3_open("foo.sqlite3", &db); // åbne en forbindelse til databasen i filen "foo.sqlite3" sqlite3_exec(&db, "VÆG TIL ":hukommelse:" AS mem", ...); // vedhæft en ny database i hukommelsen

Det er meget nyttig mulighed. De vedhæftede databaser skal have samme dataformat som hoveddatabasen, ellers vil der opstå en fejl.

Midlertidig database
Send en tom streng i stedet for filnavnet til sqlite3_open() og en midlertidig database vil blive oprettet i en fil på disken. Desuden, efter at have lukket forbindelsen til databasen, vil den blive slettet fra disken.
Finjustering af databasen ved hjælp af PRAGMA-kommandoen
SQL kommando PRAGMA tjener til at indstille alle slags indstillinger for forbindelsen eller selve databasen:

PRAGMA navn; // anmod om den aktuelle værdi af navneparameteren PRAGMA navn = værdi; // sæt navneparameteren til værdi

Opsætning af forbindelsen skal (naturligvis) ske umiddelbart efter åbning og før brug.

En komplet beskrivelse af alle parametre er tilgængelig.

Jeg vil fokusere på de vigtigste ting.

PRAGMA sidestørrelse = bytes; // database sidestørrelse; en databaseside er en udvekslingsenhed mellem disken og cachen, det er rimeligt at gøre det lig med størrelsen af ​​diskklyngen (jeg har 4096) PRAGMA cache_size = -kibibytes; // indstil forbindelsens cachestørrelse i kilobytes, som standard er det 2000 databasesider PRAGMA-kodning = "UTF-8"; // database datatype, brug altid UTF-8 PRAGMA fremmede_nøgler = 1; // aktiver understøttelse af fremmednøgler, som standard - DISABLED PRAGMA journal_mode = SLET | TRUNCATE | VEDHOLDE | HUKOMMELSE | WAL | AF; // indstil logtypen, se nedenfor PRAGMA synkron = 0 | FRA | 1 | NORMAL | 2 | FULD; // type transaktionssynkronisering, se nedenfor

Journal og registrering af transaktioner
Så vi kommer til et emne, hvor beherskelse af det øjeblikkeligt overfører dig til tredje niveau af SQLite mastergraden.

SQLite vedligeholder omhyggeligt integriteten af ​​data i databasen (ACID), og implementerer en mekanisme til at ændre data vha. transaktioner.

Kort om transaktioner: En transaktion rulles enten helt tilbage eller helt tilbage. Der kan ikke være mellemtilstande.

Hvis du ikke eksplicit bruger transaktioner ( BEGYNDE; ...; BEGÅ;), At en implicit transaktion oprettes altid. Den starter før kommandoen udføres og udføres umiddelbart efter.

Det er i øvrigt herfra klagerne over SQLites "langsommelighed". SQLite kan indsætte op til 50 tusinde poster i sekundet, men registrere transaktioner den kan ikke mere end ~50 pr. sekund.

Dette er grunden til, at det ikke er muligt at indsætte poster hurtigt ved hjælp af en implicit transaktion.

Med standardindstillinger garanterer SQLite databaseintegritet, selv når strømmen er slukket under drift.

Sådan en fantastisk adfærd opnås ved at lede magasin (speciel fil) og en smart mekanisme til at synkronisere ændringer på disk.

Kort opdatering af data i databasen fungerer således:

Før enhver databaseændring gemmer SQLite redigerbare sider fra DB til separat fil(magasin), det vil sige blot kopierer dem derhen;
- efter at have sikret sig, at en kopi af siderne er blevet oprettet, begynder SQLite at ændre databasen;
- efter at have sikret sig, at alle ændringer i databasen "nåede disken" og databasen blev komplet, sletter SQLite loggen.

Atomiciteten af ​​transaktionsmekanismen er beskrevet i detaljer.

Hvis SQLite åbner en forbindelse til databasen og ser, at der allerede er en log, indser den, at databasen er i en ufuldstændig tilstand og ruller automatisk den sidste transaktion tilbage.

Det vil sige, at databasegendannelsesmekanismen efter fejl i virkeligheden er indbygget i SQLite og fungerer ubemærket af brugeren.

Som standard holdes loggen i tilstanden SLET.
PRAGMA journal_mode = SLET

Det betyder, at logfilen slettes efter transaktionen er gennemført. Selve det at have en logfil i denne tilstand betyder for SQLite, at transaktionen ikke blev gennemført, og databasen skal gendannes. Logfilen har navnet på databasefilen tilføjet "-journal".

I tilstanden TRUNCATE Logfilen afkortes til nul (på nogle systemer er dette hurtigere end at slette filen).

I tilstanden VEDHOLDE begyndelsen af ​​logfilen er fyldt med nuller (dens størrelse ændres dog ikke, og den kan optage meget plads).

I tilstanden HUKOMMELSE logfilen opbevares i hukommelsen, og dette virker hurtigt, men garanterer ikke databasegendannelse i tilfælde af fejl (der er ingen kopi af dataene på disken).

Eller du kan helt deaktivere journalen ( PRAGMA journal_mode = FRA). I denne situation holder tilbagerulning af transaktioner op med at virke (kommando TILBAGE), og databasen vil højst sandsynligt blive beskadiget, hvis programmet afsluttes unormalt.

For en database i hukommelsen kan logtilstand kun være enten HUKOMMELSE, eller AF.

Lad os gå lidt tilbage. Hvordan "sørger" SQLite for, at databasen altid vil være konsistent?

Vi ved det moderne systemer bruge smart caching til at forbedre ydeevnen og kan forsinke skrivninger til disk.

Lad os sige, at SQLite er færdig med at skrive til databasen og ønsker at slette logfilen for at markere, at transaktionen blev begået.

Hvad hvis filen slettes, før databasen opdateres?

Hvis strømmen er slukket i denne periode, vil loggen ikke længere eksistere, og databasen vil endnu ikke være komplet - datatab!

Kort sagt, en smart ændringsforpligtelsesmekanisme skal stole på nogle garantier fra disk system og OS.

PRAGMA synkron angiver graden af ​​"paranoia" af SQLite i denne henseende.

Mode AF(eller 0) betyder: SQLite betragter dataene som værende rettet på disken umiddelbart efter at den har overført dem til OS (det vil sige umiddelbart efter at have kaldt den tilsvarende OS API).

Det betyder, at integriteten er garanteret hvornår applikationen går ned(da OS fortsætter med at køre), men ikke hvornår OS går ned eller strømsvigt.

Synkroniseringstilstand NORMAL(eller 1) garanterer integritet under OS-nedbrud og næsten alle strømafbrydelser. Der er en ikke-nul chance for, at hvis strømmen går tabt på det mest uhensigtsmæssige tidspunkt basen forringes. Dette er en slags gennemsnitlig kompromistilstand med hensyn til ydeevne og pålidelighed.

Mode FULD garanterer integritet altid og overalt og i tilfælde af eventuelle ulykker. Men det virker selvfølgelig langsommere, fordi i visse steder der er ventepauser. Og dette er standardtilstanden.

Så kun emnet for et magasin som WAL.

WAL-logtilstand
Som standard "vender" databaselogtilstanden altid til SLET. Lad os sige, at vi åbnede en forbindelse til databasen og indstillede tilstanden VEDHOLDE. Ændrede data, lukket forbindelse.

Der er en logfil tilbage på disken (hvis begyndelsen er fyldt med nuller).

Åbn forbindelsen til databasen igen. Hvis du ikke indstiller logtilstanden på denne forbindelse, fungerer den igen SLET. Når vi har opdateret dataene, vil transaktionsbekræftelsesmekanismen slette logfilen.

Logtilstand WAL det virker anderledes - det er "permanent". Når vi har skiftet databasen til WAL-tilstand, vil den forblive i denne tilstand, indtil den eksplicit ændres til en anden log-tilstand.

Så hvorfor er det nødvendigt?

SQLite blev oprindeligt designet som en indlejret database. Arkitekturen til at dele samtidig adgang til data er designet primitivt: flere forbindelser kan læse databasen samtidigt, men skrive til dette øjeblik Der kan kun være én forbindelse ad gangen. Det betyder som minimum det skriveforbindelse venter på, at databasen bliver "frigjort" fra læsere. Når du prøver at skrive til en "optaget" database, modtager applikationen en fejl SQLITE_BUSY(ikke at forveksle med SQLITE_LOCKED!). Denne adgangsdelingsmekanisme opnås gennem fillåsnings-API'en (som ikke fungerer godt på netværksdrev, så det anbefales ikke at bruge SQLite der; )

Vi håber, at vi har hjulpet dig med at løse problemet med SQLITE3. Hvis du ikke ved, hvor du kan downloade en applikation fra vores liste, så klik på linket (dette er navnet på programmet) - du finder mere detaljeret information om, hvor man kan downloade en sikker installationsversion af den påkrævede applikation.

Et besøg på denne side skulle hjælpe dig specifikt med at besvare disse eller lignende spørgsmål:

  • Hvordan åbner man en fil med SQLITE3-udvidelsen?
  • Hvordan konverterer man en SQLITE3-fil til et andet format?
  • Hvad er filformatudvidelsen SQLITE3?
  • Hvilke programmer tjener filen SQLITE3?

Hvis du, efter at have læst materialet på denne side, stadig ikke har modtaget et tilfredsstillende svar på nogen af ​​de spørgsmål, der er præsenteret ovenfor, betyder det, at oplysningerne her om SQLITE3-filen er ufuldstændige. Kontakt os ved hjælp af kontaktformularen og skriv hvilke oplysninger du ikke fandt.

Hvad kan ellers give problemer?

Der kan være flere grunde til, at du ikke kan åbne filen SQLITE3 (ikke kun manglen på et passende program).
for det første- SQLITE3-filen er muligvis ikke linket korrekt (inkompatibel) med installeret applikation for dens vedligeholdelse. I dette tilfælde skal du selv ændre denne forbindelse. Til dette formål skal du klikke højre knap Hold musen over den SQLITE3-fil, du vil redigere, og klik på indstillingen "At åbne med" og vælg derefter det program, du har installeret, fra listen. Efter denne handling skulle problemer med at åbne filen SQLITE3 helt forsvinde.
For det andet- den fil, du vil åbne, kan simpelthen være beskadiget. I dette tilfælde ville det være bedst at finde en ny version af den eller downloade den igen fra samme kilde (måske af en eller anden grund i forrige session Downloaden af ​​SQLITE3-filen er ikke fuldført, og den kan ikke åbnes korrekt).

Vil du hjælpe?

Hvis du har Yderligere Information om filtypen SQLITE3, vil vi være taknemmelige, hvis du deler den med brugere af vores side. Brug formularen nedenfor og send os dine oplysninger om filen SQLITE3.

- Udvidelse (format) er tegnene i slutningen af ​​filen efter den sidste prik.
- Computeren bestemmer filtypen ved dens udvidelse.
- Ved Windows standard viser ikke filtypenavne.
- Nogle tegn kan ikke bruges i filnavnet og filtypenavnet.
- Ikke alle formater er relateret til det samme program.
- Nedenfor er alle de programmer, der kan bruges til at åbne filen SQLITE.

SQLite er et bibliotek, der inkluderer en fuldstændig selvstændig, transaktionsbaseret SQL-databasemotor. Kræver ikke installation eller systemkonfiguration. Der er heller ingen grund til at konfigurere serveren, ingen grund til at starte eller stoppe den, og ingen grund til at oprette en ny database. Et andet plus er, at det fungerer på skift og starter og afslutter hver del separat, hvilket er nyttigt, hvis der pludselig er en fejl, eller systemet svigter. Takket være dette vil dataene ikke gå tabt, men vil blive gemt og vil fortsætte med at fungere. SQL er den mest udbredte database i verden og er meget almindelig. Har en helt åben...

Database NET er ekstremt praktisk værktøj, hvilket giver mulighed for forskellige manipulationer med utallige databaser. Efter at have downloadet applikationen kan du nemt oprette, vælge, slette eller opdatere de ønskede datatabeller. Programmet kan eksportere eller udskrive tabeller med data. Programmet interagerer med Access, Excel. Understøtter arbejde med databaser: MySQL, Oracle, SQLite, SQLServer, OLEDB, ODBC, OData, SQLAzure, LocalDB, PostgreSQL og andre databaser. Til korrekt drift Programmet kræver obligatorisk installation af Microsoft. NET Framework. Giver dig mulighed for at vælge enhver skrifttype og minimere den til bakken.

Filer i sqlite-formatet er tabeller i SQLite-databasen af ​​samme navn. En SQLite fil gemmer definitioner, tabeller, indekser og data på den maskine, hvor applikationen kører. Som i enhver database lagres alle data i form af tabeller, der hver indeholder et vist antal felter, og hver af dem indeholder data af enhver type. For at få data fra sqlite skal du køre sql forespørgsel fra enhver SQLite-aktiveret applikation. Kilde Denne udvidelse er åben, og den er med rette ejet af webudviklere. sqlite kan åbnes med enhver teksteditor, men det er ikke helt praktisk, så lad os se på de programmer, der giver behagelig visning.

Hvilke gratis programmer kan åbne sqlite-fil

  1. SQLite gratis applikation, som giver dig mulighed for at oprette, se og redigere databaser i sqlite og andre formater. Det er værd at bemærke, at denne applikation kun er et bibliotek, som selve programmet er tilføjet. Værktøjet vil ikke interagere direkte med systemet. Den maksimale tilladte databasestørrelse for arbejde er 2 TB
  2. - gratis tekst editor, er i det væsentlige en forbedret version af notesblokken. Det understøtter syntaksen for alle populære (og ikke populære) programmeringssprog, kodningskonvertering, indsættelse af "basen" af dokumentet (baseret på den udvidelse, som dokumentet er gemt i) og også meget praktisk funktion vinduesadskillelse.
  3. gratis værktøj til redigering tekstfiler. Applikationsgrænsefladen ligner notesblokgrænsefladen, men angiver hvor flere funktioner. Blandt dem er der sådanne funktioner som søgning i et dokument, ændring af kodning, udskrivning og forskellige kodninger.
  4. Notesblok er den enkleste teksteditor, inkluderet i standardsættet Windows-applikationer. Primært fokuseret på txt-format, men du kan bruge den til at åbne alle dokumenter med tekstmarkering. Formatering, afsnit og indsættelse af grafik understøttes ikke.

Hvis du støder på filer med filtypenavnet .sqlite eller .sqlite3 og ikke ved, hvordan du åbner dem for at dykke ned i deres indre, så ville dette være et glimrende valg gratis program. For dem, der undrer sig over, hvad disse filer er, er det en database i SQLite-format, hvor alle tabeldata er gemt i én fil. I dag bruger mange programmer SQLite-databaser til at gemme deres data i en organiseret form, for eksempel korrespondance og kontaktnumre i Viber.

SQLite behøver ikke at være installeret, det er den eneste eksekverbar fil, som du downloader, er hele programmet, som vi starter efter behov. Kun under den første lancering vil applikationen beskedent spørge, hvilket sprog du foretrækker at bruge; russisk er til stede. Under hver lancering dukker en tabel op med tip, som kan deaktiveres ved at markere den relevante boks.

Inden vi dykker ned i detaljerne SQLite virker, jeg vil gerne komme med en lille bemærkning. Udviklere har ingen uudtalte regler om, hvilken udvidelse en SQLite-database skal have. Afhængigt af udviklernes fantasi kan filtypenavnet være enten meningsfuldt .sqlite, .sqlite3, sl2, sl3 eller mere universel db, db2, db3, sbd3. For at sikre dig, at du virkelig har en database i SQLite-formatet, skal du, og hvis den første linje indeholder sætningen "SQLite-format", så er du velkommen til at hente SQLiteStudio.

For at åbne databasen, klik i hovedmenuen “Databaser” -> “Tilføj database”, hvorefter et vindue popper op, hvor vi vælger filen med den database vi er interesseret i, evt. laver små indstillinger (hvilken version af databasen og om den skal huskes ), og klik på "OK". Du behøver ikke bekymre dig for meget om indstillingerne og lade alt stå som standard; i 99% af tilfældene fungerer alt godt.

Efter tilslutning af databasen føjes den til den venstre tabel, som, når der klikkes på den, afslører listen over tabeller, der er indeholdt der. På højre side kan du se strukturen af ​​tabellen på fanen med samme navn og de data, der er gemt der, for hvilke du skal klikke på fanen "Data".

Der er ingen mening i at tale om andre funktioner i SQLiteStudio, de fleste almindelige brugere de bliver ikke nødvendige, og alle andre forstår, hvorfor de gider at redigere databaser, og hvordan det skal gøres. Jeg vil bare give en anbefaling, gør det sikkerhedskopi databasen, før du begynder at klatre ind i den, meget mindre redigere den.

Overraskende nok er der mange indstillinger her, men de er alle for det meste relateret til udseende programmer (farver, skrifttyper, hvad der skal vises og hvad der skal skjules) og tastaturgenveje.

5+-programmet klarer sine opgaver, så du kan få adgang til data gemt i SQLite-formatdatabaser, redigere data og tabeller. Det vigtigste er, at alt fungerer ganske stabilt, hurtigt og ikke fryser på nogle filer af ukendte årsager, som applikationer fra andre udviklere.

Programmet fungerer fint på 32 og 64 bit operativsystemer. Grænsefladen er blevet oversat til cirka ti sprog, inklusive russisk.