Node.jsからMySQLに接続する

Node.jsからMySQLへの接続を試してみます。

npm



MySQLへの接続はこちらのライブラリを使用することにしました。
https://www.npmjs.com/package/mysql

npmでインストールします。


$ npm install mysql



接続サンプルはこんな感じになりました。


  1. 'use strict'
  2. const mysql = require('mysql')
  3. // データベース接続
  4. const con = mysql.createConnection({
  5.     host     : '192.168.1.102',
  6.     user     : 'admin',
  7.     password : 'P@ssw0rd',
  8.     database : 'sample'
  9. })
  10. con.connect()
  11. con.query('SELECT CURRENT_TIMESTAMP', (err, results) => {
  12.     console.log(results)
  13. })
  14. // 切断
  15. con.end()



実行結果


$ node index.js
[ RowDataPacket { CURRENT_TIMESTAMP: 2018-07-01T07:32:52.000Z } ]



ちゃんとデータベースに接続できたようです。



データの登録と更新、削除



データの登録などを試してみます。
サンプルとして、こんなテーブルを作成しておきました。


CREATE DATABASE sample;
USE sample;
CREATE TABLE test (
     id INT NOT NULL AUTO_INCREMENT,
     value text NOT NULL,
     PRIMARY KEY (id)
);




サンプルはこんな感じになりました。


  1. 'use strict'
  2. const mysql = require('mysql')
  3. // データベース接続
  4. const con = mysql.createConnection({
  5.     host     : '192.168.1.102',
  6.     user     : 'admin',
  7.     password : 'P@ssw0rd',
  8.     database : 'sample'
  9. })
  10. con.connect()
  11. // データの登録
  12. con.query('INSERT INTO test SET ?', {value:'登録テスト'}, (err, results) => {
  13.     console.log(results)
  14.     const insertId = results.insertId
  15.     con.query('SELECT * FROM test WHERE id = ?', [insertId], (err, results) => {
  16.         console.log(results)
  17.         con.query('DELETE FROM test WHERE id = ?', [insertId], (err, results) => {
  18.             console.log(results)
  19.             // 切断
  20.             con.end()
  21.         })
  22.     })
  23. })



AUTO_INCREMENT列に採番された値は、結果の「insertId」に格納されています。
SELECTでは、insertIdの番号をプレースフォルダを使用してクエリーに埋め込み検索しています。

実行結果


$ node index.js
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 6,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
[ RowDataPacket { id: 6, value: '登録テスト' } ]
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }



いい感じです。
関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ