プログラム 技術

JavaScritptからMySQLにアクセスする

これまでPythonやC#でデータベース(MySQLやSQL)に対してアクセスしたり、データ取得したりデータ登録したりしてきましたが、
今回はJavaScriptで以前少し説明していたExpressを用いての方法となります
また、Expressに対してはPostmanを使用しています

名称バージョン
NodeJS20.12.2
npm10.5.0
Express4.21.1
mysql2.18.1
以前の記事
REST APIを自作してみる(その2) - ナストンのまとめ
REST APIを自作してみる(その2) - ナストンのまとめ

前回の章ではPOSTした結果をサーバーが起動している間だけ値を保持するところまで作成しました今回は、サーバーが停止しても ...

対象記事へ

テーブルの作成

基本的には前回のPythonと同様にSQLコマンドを実行して作成する感じとなっています

const express = require('express');
const mysql = require('mysql');

const app = express();
const port = 3000;

// MySQL接続設定
const db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'rootのパスワード',
    database: '対象DB名'
});

const tableName = 'TestTableNode';

// MySQLに接続
db.connect((err) => {
    if (err) {
        console.error('MySQL接続エラー: ', err);
        return;
    }
    console.log('MySQLに接続しました');
});

// テーブル作成
app.get('/createTable', (req, res) => {
    const createTableQuery = `
        CREATE TABLE IF NOT EXISTS ${tableName} (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(255) NOT NULL,
            age INT NOT NULL
        )
    `;
    db.query(createTableQuery, (err, result) => {
        if (err) {
            res.status(500).send('テーブル作成エラー');
            return;
        }
        res.send('テーブルが作成されました');
    });
});

app.listen(port, () => {
    console.log(`サーバーがポート${port}で起動しました`);
});

上記を実行し、そのURLにPostmanでアクセスするとテーブルが作成されています(今回はデータベース名を『TestDB』としています)

テーブルにデータを登録する

先ほど作成したテーブルに今度は実際にデータを登録してみます

const express = require('express');
const mysql = require('mysql');

const app = express();
app.use(express.json()); // 追加
const port = 3000;

// MySQL接続設定
const db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'rootのパスワード',
    database: '対象DB名'
});

const tableName = 'TestTableNode';

// MySQLに接続
db.connect((err) => {
    if (err) {
        console.error('MySQL接続エラー: ', err);
        return;
    }
    console.log('MySQLに接続しました');
});

// データ登録
app.post('/addData', (req, res) => {
    const { name, age } = req.body;
    const insertQuery = `INSERT INTO ${tableName} (name, age) VALUES (?, ?)`;
    db.query(insertQuery, [name, age], (err, result) => {
        if (err) {
            res.status(500).send('データ登録エラー');
            console.log(err)
            return;
        }
        res.send('データが登録されました');
    });
});

app.listen(port, () => {
    console.log(`サーバーがポート${port}で起動しました`);
});

上記を実行し、そのURLにPostmanでアクセスすると対象テーブル上にデータが作成されています

テーブルに登録されているデータを取得する

最後にテーブル上のデータを取得します

const express = require('express');
const mysql = require('mysql');

const app = express();
app.use(express.json());
const port = 3000;

// MySQL接続設定
const db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'rootのパスワード',
    database: '対象DB名'
});

const tableName = 'TestTableNode';

// MySQLに接続
db.connect((err) => {
    if (err) {
        console.error('MySQL接続エラー: ', err);
        return;
    }
    console.log('MySQLに接続しました');
});

// データ取得
app.get('/getTabelDate', (req, res) => {
    const selectTableQuery = `
        SELECT * FROM ${tableName}
    `;
    db.query(selectTableQuery, (err, results) => {
        if (err) {
            res.status(500).send('データベースクエリエラー');
            return;
        }
        res.json(results);
    });
});

app.listen(port, () => {
    console.log(`サーバーがポート${port}で起動しました`);
});

上記を実行し、そのURLにPostmanでアクセスすると対象テーブル上のデータを取得できました

最後に

これでJavaScriptからMySQLへの操作ができるようになりました
ただ、Pythonの時と同様に基本的にSQLコマンドを渡して実行してもらう形となっているのである程度の知識が必要となりそうです

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社
アドバンスド・ソリューション株式会社

アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...

サイトへ移動

PR

-プログラム, 技術
-, ,