Как использовать переменную с sqlite3 в электронном приложении - PullRequest
1 голос
/ 27 февраля 2020

Я начинаю путешествие (!) По созданию личного приложения, которое записывает процессы, которые я использую для съемки, разработки и печати фотографий с использованием аналогового рабочего процесса.

Это будет приложение для настольного компьютера, в настоящее время только для собственного использования.

В прошлом я баловался с Electron и решил использовать это, поскольку мне было бы легко использовать знания HTML и CSS, которые у меня уже есть. Использование JS ограничено, но не существует.

Как дБ я хочу иметь возможность создавать реляционные соединения, поэтому в значительной степени исключаю что-то вроде PouchDB или IndexedDB и wi sh для использования SQLite3.

У меня это работает с Electron на моем ноутбуке с Win 10, и я могу показать данные из базы данных в приложении.

Хотя я действительно борюсь с записью в базу данных используя данные из полей ввода. Ниже приводится то, что у меня есть, function 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 Ответ

0 голосов
/ 28 февраля 2020

Я понял это с двумя изменениями ...:)

  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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...