SQLite 電子モジュール

Bilal Shahid 2023年10月12日
  1. SQLite エレクトロンとは
  2. SQLite3 モジュールを Electron で使用する方法
  3. SQLite エレクトロンの使い方
SQLite 電子モジュール

SQLite は、高速で信頼性が高く、小型で自己完結型のフル機能の SQL データベース エンジンを実行するために構築されたオープン ソースの C 言語ライブラリです。

これは、世界で最も頻繁に使用されているデータベース エンジンです。 組み込みの携帯電話、コンピューター、および人々が日常生活で使用するその他の無数のアプリケーションに組み込まれています。

Electron SQLite は、electron が再構築する必要なく SQLite3 データベースを使用できるようにするモジュールです。 現在、Linux (x64) と Windows (x32、x64) をサポートしています。

SQLite エレクトロンとは

SQLite Electron は基本的にインストール可能なモジュールです。 パッケージ マネージャー npm を使用して、SQLite Electron をインストールできます。

これは、次の方法で行うことができます。

npm install SQLite-electron

このパッケージは、システムがサポートされている限り、SQLite のビルド済みバイナリをシステムにインストールするのに役立ちます。 いくつかの組み込み関数があり、問題を解決に導くことができます。

SQLite3 モジュールを Electron で使用する方法

SQLite3 パッケージを使用する electron を使用してアプリケーションを開発する必要があるタスクがあるとします。 その場合、私たちはあなたがそのタスクを達成するのを手伝います.

Electron で SQLite を使用する簡単な方法は、electron-builder を使用することです。 これを達成するための最初のステップは、package.json にインストール後の手順を追加することです。

これは次の方法で行われます。

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

完了したら、必要な依存関係をインストールしてビルドします。

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

上記の手順を完了すると、electron-builder は、Electron バインディングの適切な名前を使用して、プラットフォーム用のネイティブ モジュールをビルドします。

予想どおり、後でコードでそれをrequireすることができます。 "/m" スイッチを追加して、並列ビルドを有効にします。

次の 2つの側面を常に考慮する必要があります。

  1. electron がモジュールの場所を認識していることを確認する必要があります。 これは、NODE_PATH を設定することで発生します。

    Electron は NODE_PATH 環境変数を自動的に設定できません。 必要なモジュールを含むすべてのパスに設定して、手動で行う必要があります。

  2. electron ヘッダーに対してネイティブ モジュールをコンパイルします。

Electron SQLite の機能

SQLite electron パッケージには、目的をより効率的に達成するのに役立ついくつかの機能があります。

  1. dbPath: データベースのパスを設定する変数です。 データベースがすでに存在する場合は、データベースに接続します。

  2. executeQuery(Query =" " fetch =" ", values =[] ): この関数は、fetchvalues を使用して単一のクエリを実行します。

    ただし、fetch は、'all''1''2' などのデータ型の文字列である必要があることを知っておくことが重要です。すべての値は配列内にある必要があります。 .

  3. executeMany( Query=" ", values = [] ): この関数は、複数の値を使用して単一のクエリを実行する役割を果たします。

  4. executeScript( scriptName =" ): この関数は SQL スクリプトを実行します. scriptName がスクリプトの名前であることを確認してください.

SQLite エレクトロンの使い方

electron を使用する場合、SQLite Electron はメイン プロセスにのみ必要です。 次のコードを例に取ります。

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

dbPath

前に述べたように、dbPath は公開された変数であり、新しいデータベースのパスを設定し、既存のデータベースに接続する役割を果たします。 API を使用する前に、この変数を修正することをお勧めします。

これは次の方法で行います。

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

executeQuery 関数は、単一のクエリの実行を担当します。 例えば:

SELECT * FROM main_sqlite  WHERE..

ここでは、値配列を介して値を渡し、関数を呼び出して特定のフェッチ パラメータを指定することでデータをフェッチできます。 無限

クエリ文字列に値を指定しないでください。 値配列を使用して、クエリの値を提供します。

この手順を回避すると、SQL インジェクション攻撃が発生する可能性があります。 例えば:

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

この機能は、次の方法で使用できます。

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

この関数は、複数の値を使用するクエリを実行するために使用されます。

例えば:

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

executeMany では、関数 fetch は使用できません。

この関数は、次の方法で使用できます。

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

この関数は、SQL スクリプトを使用しながら複数のクエリを実行します。

これは次の方法で行われます。

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

electron SQLite を使用する必要がある場合、この記事がそのインストール、機能、および使用法をナビゲートするのに役立つことを願っています。

著者: Bilal Shahid
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