PAGE TOP


Node.js MySQLに接続

2017年3月15日Node.js

MySQLに接続・データベース・テーブル・挿入

まず、MySQLに接続する為には、mysqlモジュールをインストールしておく必要がある。


npm install mysql

mysqlモジュールはデフォルトでloaclhostに接続するので事前にMySQLが起動されている必要がある。

//接続
var mysql = require('mysql');
var client = mysql.createConnection({
    host:'localhost',
	user: 'nodejs',
	password: 'nodejs'
});


//クエリ発行 データーベース作成とテーブル定義
client.query('CREATE DATABASE node_js');

client.query('CREATE TABLE node_js.users (' +
	'id INT NOT NULL AUTO_INCREMENT, ' +
	'name VARCHAR(128) NOT NULL, ' +
	'text TEXT NOT NULL, PRIMARY KEY(id)' +
	')'
);

//既にデータベースがある場合
var ignore = [mysql.ERROR_DB_CREATE_EXISTS, mysql.ERROR_TABLE_EXISTS_ERROR];

client.on('error', function(err){
	if(ignore.indexOf(err.number) > -1) { return; }
	throw err;
});

//テーブルに挿入
client.query('INSERT INTO node_js.users (' +
	'name, text) ' +
	'VALUES ("Yoshiki","Hello World");'
);

client.end();

実行すると、node_jsデーターベースが作成され、usersテーブルが定義され、その中に1行挿入される。

エスケープ処理

また、外部からの入力をエスケープする場合は、paramsオブジェクトに定義する。オブジェクト内のprocess.argv[0] は node [1] は、C:\…… /mysql-node.jsmysql-node.js と既に使用しているため、[2]から使用する。paramsオブジェクトに定義した文字列はmysqlモジュールによって自動でエスケープ処理される。

var params = {
	name: process.argv[2],
	text: process.argv[3]
}

var mysql = require('mysql');
var client = mysql.createConnection({
    host:'localhost',
	user: 'nodejs',
	password: 'nodejs'
});


client.query('CREATE DATABASE node_js');

client.query('CREATE TABLE node_js.users (' +
	'id INT NOT NULL AUTO_INCREMENT, ' +
	'name VARCHAR(128) NOT NULL, ' +
	'text TEXT NOT NULL, PRIMARY KEY(id)' +
	')'
);

var ignore = [mysql.ERROR_DB_CREATE_EXISTS, mysql.ERROR_TABLE_EXISTS_ERROR];

client.on('error', function(err){
	if(ignore.indexOf(err.number) > -1) { return; }
	throw err;
});

if(params.name && params.text) {
	client.query('INSERT INTO node_js.users (' +
	'name, text) ' +
	'VALUES(?, ?);', [params.name, params.text]);
}


client.end();

コマンドラインから実行と同時に、2つの入力値を送信してみる。

node mysql-node.js "Yoshiki" "Hello World"

その後、テーブルを確認すると、挿入されている。