gpt4 book ai didi

sqlite - 如何在 Electron 应用程序中使用带有sqlite3的变量

转载 作者:行者123 更新时间:2023-12-03 12:22:25 27 4
gpt4 key购买 nike

我正在开始 (!) 构建个人应用程序的旅程,该应用程序记录我使用模拟工作流程拍摄、冲洗和打印照片的过程。

这将是一个基于桌面的应用程序,目前仅供我自己使用。

我过去曾接触过 Electron 并决定使用它,因为它可以很容易地使用我已有的 HTML 和 CSS 知识。 JS 的使用是有限的,但并非不存在。

作为数据库,我希望能够创建关系连接,所以几乎排除了 PouchDB 或 IndexedDB 之类的东西,并希望使用 SQLite3。

我在我的 Win 10 笔记本电脑上使用 Electron 运行它,并且能够在应用程序中显示来自数据库的数据。

不过,我真正苦恼的是使用来自输入字段的数据写入数据库。下面是我所拥有的,函数 addDev() 是我需要帮助的部分。

我试图将数据存储在一个变量中,然后在 sql INSERT 查询中访问它。

<script>
// Open and create IF NOT EXISTS db
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('app/db/apr.db');

db.serialize(function () {
db.run('CREATE TABLE IF NOT EXISTS Developers (make, name, ratio, notes)');
});

//Add html form data to db
function addDev() {

var make = document.getElementById("make").value;
var name = document.getElementById("name").value;
var ratio = document.getElementById("ratio").value;
var notes = document.getElementById("notes").value;

db.run('INSERT INTO Developers (make, name, ratio, notes) VALUES (make, name, ratio, notes)', function(err) {
if (err) {
console.log(err.message);
}
// get the last insert id
console.log("A row has been inserted.");
})
};

// Display data in table on app page
var rows = document.getElementById("developers");

db.each('SELECT rowid AS id, make, name, ratio, notes FROM Developers', function(err, row) {
var item = document.createElement("tr");

item.innerHTML = "<td>" + row.id + "</td>" + "<td>" + row.make + "</td>" + "<td>" + row.name + "</td>" + "<td>" + row.ratio + "</td>" + "<td>" + row.notes + "</td>";

rows.appendChild(item);
});

db.close();

这不会给我错误消息,而是成功消息 - 除了不成功。

最佳答案

我已经通过两个更改解决了这个问题...:)

  1. 我把 db.close() 放错了地方。在我输入信息之前,数据库正在关闭。现在将其移至 function addDev()

  2. 我还重写了 INSERT 查询,如下所示:

        // Open and create IF NOT EXISTS db
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('app/db/apr.db');

db.serialize(function () {
db.run('CREATE TABLE IF NOT EXISTS Developers (make, name, ratio, notes)');
});

//Add html form data to db
function addDev() {

var make = document.getElementById("make").value;
var name = document.getElementById("name").value;
var ratio = document.getElementById("ratio").value;
var notes = document.getElementById("notes").value;

db.run('INSERT INTO Developers (make, name, ratio, notes) VALUES (?, ?, ?, ?)', [make, name,ratio,notes], function(err) {
if (err) {
console.log(err.message);
}
// get the last insert id
console.log("A row has been inserted.");
});

db.close();
};

// Display data in table on app page
var rows = document.getElementById("developers");

db.each('SELECT rowid AS id, make, name, ratio, notes FROM Developers', function(err, row) {
var item = document.createElement("tr");

item.innerHTML = "<td>" + row.id + "</td>" + "<td>" + row.make + "</td>" + "<td>" + row.name + "</td>" + "<td>" + row.ratio + "</td>" + "<td>" + row.notes + "</td>";

rows.appendChild(item);
});

</script>

数据现在正在通过 SELECT 查询输入到表中并显示在窗口中。

关于sqlite - 如何在 Electron 应用程序中使用带有sqlite3的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60438826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com