大変お手数ではございますが、
ご指導のほど何卒どうぞよろしくお願い申し上げます。
electronによるデスクトップアプリを制作しており、データベースはsqlite3を用いております。
main.jsは以下のように設定しております。(一部公開となります(拙いコードで申し訳ありません))
javascript
1const { app, BrowserWindow, ipcMain, dialog } = require('electron'); 2const path = require('path'); 3const dbPath = path.resolve(__dirname, 'database.db') 4const data = require('sqlite3').verbose(); 5var db = new data.Database(dbPath); 6 7const createWindow = () => { 8 const mainWindow = new BrowserWindow({ 9 width: 1440, 10 height: 900, 11 title: 'マイアプリ', 12 webPreferences: { 13 nodeIntegration: false, 14 contextIsolation: true, 15 preload: path.join(__dirname, 'js/preload.js'), 16 }, 17 }); 18 19 mainWindow.loadFile(path.join(__dirname, 'ファイル')); 20}; 21 22app.once('ready', () => { 23 createWindow(); 24}); 25 26app.once('window-all-closed', () => { 27 28 db.close(); 29 30 app.quit() 31} 32 ); 33 34 35//二重起動の防止 36const doubleboot = app.requestSingleInstanceLock(); 37if(!doubleboot){ 38 app.quit(); 39} 40 41 42ipcMain.handle('★★',async (event, data) => { 43 44 const ●● = await db.prepare('INSERT INTO ●●(●●, ●●) VALUES (?, ?)'); 45 ●●.run(["", ""]); 46 47 return await new Promise((resolve, reject) => db.get('SELECT * FROM ●● where ●● = last_insert_rowid();', (err, row) => { 48 if (err) { 49 reject(err); 50 } 51 const stmt = db.prepare('INSERT INTO ●●(●●, ●●, ●●,●●,●●) VALUES (?, ?,?,?,?)'); 52 stmt.run(["●●", "●●","●●","●●","●●"]); 53 resolve(●●); 54 })) 55 56}); 57
preload.jsから「★★」を呼び出した後、ウィンドウを閉じますと
以下のエラーが表示されている状態となっております。
Error: SQLITE_BUSY: unable to close due to unfinalized statements or unfinished backups
以上の状況から質問事項をまとめればと思いまして
①こちらのエラー解消方法について、アドバイスいただければ幸いです。
②アプリのウィンドウを閉じた際、db.close()の表記がなくても、データベースはクローズされた状態となりますでしょうか?
以上2点について、お忙しいところ大変申し訳ありませんが、
何卒ご教授のほどどうぞよろしくお願い申し上げます。
あなたの回答
tips
プレビュー