なんだかGoodVibes

日々の勉強メモです。

【Node】SQLiteを使ってみる(レコードの更新と削除)

こんにちは。
以下の記事の続きです。

【Node】SQLiteを使ってみる - なんだかGoodVibes


概要

最初に以下のレコードを登録します。

id name age
1 Bob 25
2 Kevin 35
3 Tom 45


レコードの更新(UPDATE)

var sqlite3 = require('sqlite3').verbose();

var db = new sqlite3.Database(':memory:');

db.serialize(() => {
    db.run('CREATE TABLE testdb (id INTEGER, name TEXT, age INTEGER)');

    var insertData = db.prepare('INSERT INTO testdb VALUES (?, ?, ?)');
    insertData.run([1, 'Bob', 25]);
    insertData.run([2, 'Kevin', 35]);
    insertData.run([3, 'Tom', 45]);
    insertData.finalize();

    // レコードを更新
    db.run('UPDATE testdb SET age = 26 WHERE id = 1', err => {
        if (err) {
            return console.error(err.message);
        }
    });

    DisplayTable(db);
});

db.close();

function DisplayTable(db) {
    db.all("SELECT * FROM testdb", (err, rows) => {
        if (err) {
            console.error(err.message);
        }

        rows.forEach(row => {
            console.log(`${row.id} : ${row.name} : ${row.age}`);
        });
    });
}

結果は以下のようになります。

1 : Bob : 26
2 : Kevin : 35
3 : Tom : 45


レコード更新部分は、以下のように書いても同じです。

db.run('UPDATE testdb SET age = ? WHERE id = ?', 26, 1, err => {
    if (err) {
        return console.error(err.message);
    }
});


レコードの削除(DELETE)

var sqlite3 = require('sqlite3').verbose();

var db = new sqlite3.Database(':memory:');

db.serialize(() => {
    db.run('CREATE TABLE testdb (id INTEGER, name TEXT, age INTEGER)');
    var insertData = db.prepare('INSERT INTO testdb VALUES (?, ?, ?)');
    insertData.run([1, 'Bob', 25]);
    insertData.run([2, 'Kevin', 35]);
    insertData.run([3, 'Tom', 45]);
    insertData.finalize();

    // レコードを削除
    db.run('DELETE FROM testdb WHERE id = 3', err => {
        if (err) {
            return console.error(err.message);
        }
    });

    DisplayTable(db);
});

db.close();

function DisplayTable(db) {
    db.all("SELECT * FROM testdb", (err, rows) => {
        if (err) {
            console.error(err.message);
        }

        rows.forEach(row => {
            console.log(`${row.id} : ${row.name} : ${row.age}`);
        });
    });
}

結果は以下のようになります。

1 : Bob : 25
2 : Kevin : 35


レコード削除部分は、以下のように書いても同じです。

db.run('DELETE FROM testdb WHERE id = ?', 3, err => {
    if (err) {
        return console.error(err.message);
    }
});



以上です。