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