SQLite 전자 모듈

Bilal Shahid 2023년10월12일
  1. SQLite 전자는 무엇입니까
  2. Electron에서 SQLite3 모듈을 사용하는 방법
  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의 미리 빌드된 바이너리를 시스템에 설치하는 데 도움이 됩니다. 문제를 해결 방법으로 탐색할 수 있는 몇 가지 기본 제공 기능이 있습니다.

Electron에서 SQLite3 모듈을 사용하는 방법

태스크가 SQLite3 패키지를 사용하는 전자를 사용하여 애플리케이션을 개발해야 한다고 가정하십시오. 이 경우 해당 작업을 수행하도록 도와드리겠습니다.

전자와 함께 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 바인딩에 적합한 이름으로 플랫폼용 네이티브 모듈을 빌드합니다.

예상대로 나중에 코드에서 요구할 수 있습니다. "/m" 스위치를 추가하여 병렬 구축을 활성화합니다.

두 가지 측면을 항상 고려해야 합니다.

  1. 전자가 모듈을 찾을 위치를 알고 있는지 확인해야 합니다. 이는 NODE_PATH를 설정하면 발생합니다.

    Electron은 NODE_PATH 환경 변수를 자동으로 설정할 수 없습니다. 원하는 모듈을 포함하는 모든 경로로 설정하여 수동으로 수행해야 합니다.

  2. 전자 헤더에 대해 네이티브 모듈을 컴파일합니다.

Electron SQLite의 기능

SQLite 전자 패키지에는 목적을 보다 효율적으로 달성하는 데 도움이 되는 여러 기능이 있습니다.

  1. dbPath: 데이터베이스 경로를 설정하는 변수입니다. 데이터베이스가 이미 있는 경우 데이터베이스에 연결합니다.

  2. executeQuery(Query =" " fetch =" ", values =[] ): 이 함수는 fetchvalues를 사용하여 단일 쿼리를 실행하는 작업을 담당합니다.

    그러나 fetch가 데이터 유형 문자열(예: 'all', '1', '2' 등)에 있어야 한다는 것을 아는 것이 중요합니다. 모든 값은 배열에 있어야 합니다. .

  3. executeMany( Query=" ", values = [] ): 이 함수는 여러 값을 사용하여 단일 쿼리를 실행하는 작업을 담당합니다.

  4. executeScript( scriptName =" ): 이 함수는 SQL 스크립트를 실행하는 역할을 합니다. scriptName이 스크립트의 이름인지 확인하십시오.

SQLite 전자 사용 방법

전자를 사용하는 동안 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 기능은 단일 쿼리 실행을 담당합니다. 예를 들어:

SELECT * FROM main_sqlite  WHERE..

여기에서 값 배열을 통해 값을 전달하고 특정 가져오기 매개변수(예: "all", 1, 2, 3, 4, …)를 지정하여 데이터를 가져오는 함수를 호출할 수 있습니다. “무한대”.

쿼리 문자열에 값을 지정해서는 안 된다는 점을 아는 것이 중요합니다. 값 배열을 사용하여 쿼리에 대한 값을 제공합니다.

이 단계를 피하면 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)})

실행 스크립트

이 기능은 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