感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Node.jsでMySQLに接続し、テーブルから値を取り出すサンプル。

スポンサーリンク

Node.jsでデータベースにアクセスするためのnpmパッケージ名一覧

DBのドライバ名 npmでのパッケージ名 対応DB
node-mysql mysql MySQl
node-oracle oracle Oracle
node-mongodb-native mongodb MongoDB
node-sqlite3 sqlite3 SQLite3
node-postgres pg PstgreSQL

npmでデータベースドライバをインストールする時は、

npm install mysql

のように、npmでのパッケージ名を指定すればいい。

Node.jsでMySQLに接続する。

まず、接続するMySQLのテーブルを確認する。
MySQLで、テーブルの一覧を表示するコマンドは以下。

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| mytable        |
+----------------+
1 row in set (0.00 sec)

MySQLでテーブルの構造を確認する

mysql> desc mytable;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| contact_id | int(11)      | NO   | PRI | NULL    | auto_increment |
| last_name  | varchar(30)  | YES  |     | NULL    |                |
| first_name | varchar(20)  | YES  |     | NULL    |                |
| email      | varchar(50)  | YES  |     | NULL    |                |
| gender     | char(1)      | YES  |     | NULL    |                |
| interests  | varchar(100) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
6 rows in set (0.03 sec)

MySQLでデータを挿入する

mysql> INSERT INTO mytable values(1,'sho322', 'fuga','hogehoge@hoge.com', '1','Node.js');
Query OK, 1 row affected (0.03 sec)

mysql> select * from mytable;
+------------+-----------+------------+-------------------+--------+-----------+
| contact_id | last_name | first_name | email             | gender | interests |
+------------+-----------+------------+-------------------+--------+-----------+
|          1 | sho322    | fuga       | hogehoge@hoge.com | 1      | Node.js   |
+------------+-----------+------------+-------------------+--------+-----------+
1 row in set (0.00 sec)

それでは、上記のテーブルの値をNode.jsで取得して、コンソールに表示してみる。
サンプルコードは以下の通り。

var mysql = require('mysql');
var connection = mysql.createConnection({
	host: 'localhost',
	database: 'test',
	user: 'root',
	password: '1234'
});

var query = connection.query('select * from mytable;', function (err, results) {
	console.log('--- results ---');
	console.log(results);
	console.log('name is ...');
	console.log(results[0].last_name);
});

connection.end(function() {
	console.log('connection end');
});

実行結果はこうなる。

>node mysqltest.js
--- results ---
[ { contact_id: 1,
    last_name: 'sho322',
    first_name: 'fuga',
    email: 'hogehoge@hoge.com',
    gender: '1',
    interests: 'Node.js' } ]
name is ...
sho322
connection end

NodeのSQL実行結果はJSON配列で返ってくるので、その中の値を取り出せばいい。

Node.jsでDBに接続したときのエラー内容を表示する。

適当なdummyユーザ(存在しない)で接続した時は、コールバックでerrを受け取ればいい。

var mysql = require('mysql');
var connection = mysql.createConnection({
	host: 'localhost',
	database: 'test',
	user: 'dummy',
	password: 'dummy'
});

var query = connection.query('select * from mytable;', function (err, result) {
	if (err) {
		console.log(err);
	}
});

結果は以下のように、アクセスできなかったことが通知される。

>node mysqltest.js
{ [Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'dummy'@'localhost' (using password: YES)] code: 'ER_ACCESS_DENIED_ERROR', fat
al: true }

参考にした書籍


この本はNode.jsを始めたい人が一番はじめに手に取る本だと思うし、一番初めにこの本を選んだのは間違いじゃないと思っている。
何がって、解説がすごく丁寧で、つまづかずに理解を進めることができる!

感謝のプログラミング

今回で感謝のプログラミングは【569時間目】
10000時間まで、あと【9431時間】