SQLite Electron-Modul

Bilal Shahid 12 Oktober 2023
  1. Was ist SQLite Electron
  2. So verwenden Sie das Modul SQLite3 mit Electron
  3. So verwenden Sie SQLite Electron
SQLite Electron-Modul

SQLite ist eine Open-Source-C-Bibliothek, die entwickelt wurde, um eine schnelle, zuverlässige, kleine, eigenständige SQL-Datenbank-Engine mit vollem Funktionsumfang auszuführen.

Es ist die weltweit am häufigsten verwendete Datenbank-Engine; es kommt in eingebauten Mobiltelefonen, Computern und unzähligen anderen Anwendungen vor, die Menschen in ihrem täglichen Leben verwenden.

Electron SQLite ist ein Modul, das es dem Elektron ermöglicht, die Datenbank SQLite3 zu verwenden, ohne dass sie neu erstellt werden muss. Derzeit unterstützt es Linux (x64) und Windows (x32, x64).

Was ist SQLite Electron

SQLite Electron ist im Wesentlichen ein Modul, das installiert werden kann. Sie können den Paketmanager npm verwenden, um SQLite Electron zu installieren.

Dies kann auf folgende Weise erfolgen:

npm install SQLite-electron

Dieses Paket hilft bei der Installation der vorgefertigten Binärdateien von SQLite auf Ihrem System, solange Ihr System unterstützt wird. Es verfügt über mehrere integrierte Funktionen, mit denen Sie Ihre Probleme zu einer Lösung navigieren können.

So verwenden Sie das Modul SQLite3 mit Electron

Angenommen, Sie müssen für eine Aufgabe eine Anwendung mit Elektron entwickeln, die das Paket SQLite3 verwendet. In diesem Fall helfen wir Ihnen, diese Aufgabe zu erfüllen.

Eine einfache Möglichkeit, SQLite mit dem Elektron zu verwenden, ist ein Elektron-Builder. Der erste Schritt, um dies zu erreichen, besteht darin, einen Post-Install-Schritt in Ihre package.json einzufügen.

Dies geschieht auf folgende Weise:

"scripts": {
   "postinstall": "install-app-deps"
   ...
}

Wenn Sie fertig sind, installieren Sie die erforderlichen Abhängigkeiten und erstellen Sie sie.

npm install --save-dev electron-builder
npm install --save sqlite3
npm run postinstall

Nachdem Sie mit den oben genannten Schritten fertig sind, baut der Elektron-Builder das native Modul für Ihre Plattform mit dem richtigen Namen für die Elektronenbindung.

Sie können es wie erwartet später im Code anfordern. Fügen Sie den Schalter "/m" hinzu, um paralleles Bauen zu ermöglichen.

Dabei sind immer zwei Aspekte zu beachten:

  1. Sie müssen sicherstellen, dass Elektron weiß, wo sich Ihre Module befinden. Dies geschieht durch das Setzen von NODE_PATH.

    Electron kann die Umgebungsvariablen NODE_PATH nicht automatisch setzen. Sie müssen dies manuell tun, indem Sie es auf alle Pfade einstellen, die Ihre gewünschten Module enthalten.

  2. Kompilieren Sie native Module gegen Electron-Header.

Funktionen von Electron SQLite

Das SQLite-Elektronenpaket hat mehrere Funktionen, die Ihnen helfen, Ihren Zweck effizienter zu erreichen.

  1. dbPath: Dies ist eine Variable, die Ihren Pfad für die Datenbank festlegen soll. Wenn die Datenbank bereits vorhanden ist, wird eine Verbindung zur Datenbank hergestellt.

  2. executeQuery(Query =" " fetch =" ", values =[] ): Diese Funktion hat die Aufgabe, eine einzelne Abfrage mit fetch und values auszuführen.

    Es ist jedoch wichtig zu wissen, dass der fetch in einem Datentyp-String sein muss, zum Beispiel 'all', '1', '2' usw. Alle Werte müssen im Array enthalten sein .

  3. executeMany( Query=" ", values = [] ): Diese Funktion hat die Aufgabe, eine einzelne Abfrage mit mehreren Werten auszuführen.

  4. executeScript( scriptName =" ): Diese Funktion wird beauftragt, das SQL-Skript auszuführen Stellen Sie sicher, dass scriptName der Name des Skripts ist.

So verwenden Sie SQLite Electron

Während ein Elektron verwendet wird, sollte das SQLite Electron nur für den Hauptprozess notwendig sein. Nehmen Sie den folgenden Code als Beispiel.

const {app, BrowserWindow} = require('electron')
const sqlite = require('sqlite-electron')

function createWindow() {
  // Add your code here
}
app.whenReady().then(
    () => {
        // Add your code here
    })

app.on(
    'window-all-closed',
    () => {
        // Add your code here
    })

dbPfad

Wie bereits erwähnt, ist dbPath eine Variable, die exponiert und damit beauftragt wird, den Pfad der neuen Datenbank festzulegen und eine Verbindung zu einer vorhandenen Datenbank herzustellen. Es wäre am besten, diese Variable zu reparieren, bevor Sie irgendwelche APIs verwenden.

Tun Sie dies auf folgende Weise:

const {app, BrowserWindow, ipcMain} = require('electron')
const SQLite = require('SQLite-electron')

function createWindow() {
  // Your Code
}
app.whenReady().then(
    () => {
        // Your Code
    })

app.on(
    'window-all-closed',
    () => {
        // Your Code
    })

ipcMain.handle('databasePath', (event, dbPath) => {
  SQLite.dbPath = dbPath
  return true
})

executeQuery

Die Funktion executeQuery ist für die Ausführung einer beliebigen einzelnen Abfrage verantwortlich. Zum Beispiel:

SELECT * FROM main_sqlite  WHERE..

Hier können Sie Werte durch das Wertearray übergeben und die Funktion zum Abrufen von Daten aufrufen, indem Sie bestimmte Abrufparameter angeben, z. B. "all", 1, 2, 3, 4, … “Unendlichkeit”.

Es ist wichtig zu wissen, dass Werte niemals in der Abfragezeichenfolge angegeben werden sollten. Verwenden Sie das Wertarray, um Werte für die Abfrage bereitzustellen.

Das Vermeiden dieses Schritts kann zu SQL-Injection-Angriffen führen. Zum Beispiel:

("INSERT INTO main_sqlite (NAME, DOB, AGE, MAIN_ADDRESS ) VALUES ( ?,?,?,?);"
, ["name", 4/08.2001, 20, "sample address"])

Sie können diese Funktion auf folgende Weise verwenden:

const {app, BrowserWindow, ipcMain} = require('electron')
const sqlite = require('sqlite-electron')

function createWindow() {
  // Add your code
}
app.whenReady().then(
    () => {
        // Add your code
    })

app.on(
    'window-all-closed',
    () => {
        // Add your code
    })

ipcMain.handle('databasePath', (event, dbPath) => {
  SQLite.dbPath = dbPath
  return true
})

  ipcMain.handle(
      'executeQuery', async (event_name, query_name, fetch_name, val) => {
        return await sqlite.executeQuery(query_name, fetch_name, val);
      })

executeMany

Diese Funktion wird zum Ausführen einer Abfrage verwendet, die mehrere Werte verwendet.

Zum Beispiel:

("INSERT INTO main_sqlite (NAME, DOB, AGE, MAIN_ADDRESS ) VALUES ( ?,?,?,?);"
, ["name", 4/08.2001, 20, "sample address"], ["name2", 4/09.2000, 21, "sample address2"])

In executeMany ist die Funktion fetch nicht verfügbar.

Die Funktion kann wie folgt verwendet werden:

const {app, BrowserWindow, ipcMain} = require('electron')
const SQLite = require('SQLite-electron')

function createWindow() {
  // Add your Code
}
app.whenReady().then(
    () => {
        // Add your Code
    })

app.on(
    'window-all-closed',
    () => {
        // Add your Code
    })

ipcMain.handle('databasePath', (event, dbPath) => {
  SQLite.dbPath = dbPath
  return true
})

  ipcMain.handle(
      'executeMany',
      async (event_name, query_name, val) => {
          return await sqlite.executeMany(query_name, val)})

executeScript

Diese Funktion führt mehrere Abfragen aus, während sie SQL-Skripts verwendet.

Dies geschieht auf folgende Weise:

const {app, BrowserWindow, ipcMain} = require('electron')
const SQLite = require('SQLite-electron')

function createWindow() {
  // Add your Code
}
app.whenReady().then(
    () => {
        // Add your Code
    })

app.on(
    'window-all-closed',
    () => {
        // Add your Code
    })

ipcMain.handle('databasePath', (event_name, dbPath) => {
  SQLite.dbPath = dbPath
  return true
})

  ipcMain.handle('executeScript', async (event_name, pathOfScript) => {
    return await sqlite.executeScript(pathOfScript);
    // or
    return await sqlite.executeScript(
        'CREATE TABLE IF NOT EXISTS main_sqlite (USERID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,FULLNAME TEXT NOT NULL,FULLADDRESS CHAR(50) NOT NULL);');
  })

Wenn Sie Electron SQLite verwenden müssen, hoffen wir, dass Ihnen dieser Artikel bei der Installation, den Funktionen und der Verwendung geholfen hat.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub