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"
その後、テーブルを確認すると、挿入されている。