LoginSignup
51
47

More than 5 years have passed since last update.

MySQLで書いてあるDBをNode.jsから利用する

Last updated at Posted at 2012-08-31

事務所のMySQLで書いてあるDBをNode.jsで利用しようと思って、今日は
node-mysql https://github.com/felixge/node-mysql
を使ってみました、の巻。

インストール

node-mysqlのREADMEには、npm install mysql@2.0.0-alpha3 と書いてありますが、 試しに npm install mysql とやると mysql@0.9.6 が入ってしまいます。

でも、-alpha3って微妙に嫌だなぁ、と思いつつnpm install mysql@2とするとやっぱり mysql@2.0.0-alpha3が入るのでした。まいっか。

npm install mysql@2

コードを書く

今日は、今使ってるDBへのアクセスだけなのでとりあえずこんな感じ。

データベース piyo_db
テーブル piyotable

このMySQLテーブルのUserNO が '012345678' なデータを取り出しconsole.logで出力してみます。

var mysql = require('mysql');

var connection = mysql.createConnection({
  host     : 'localhost', //接続先ホスト
  user     : 'hoge',      //ユーザー名
  password : 'piyopiyo',  //パスワード
  database : 'piyo_db'    //DB名
});

//SQL文を書く
var sql = 'SELECT * FROM piyotable WHERE UserNO = ?;';
//プレースホルダに差し込むデータ
var userId = '012345678';

//接続します
connection.connect();

//プレースホルダー使ってSQL発行
var query = connection.query(sql, [userId]);

//あとはイベント発生したらそれぞれよろしくねっ
query
  //エラー用
  .on('error', function(err) {
    console.log('err is: ', err );
  })

  //結果用
  .on('result', function(rows) {
    console.log('The res is: ', rows );
  })

  //終わったよう~
  .on('end', function() {
    console.log('end');
    connection.destroy(); //終了
  });

こんな結果になりました

$ node /home/hoge/mysqltest.js
The res is:  { ID: 1435,
  UserNO: '012345678',
  usedtime: '2012/08/29 14:52:50',
  data: 'OK(^^)/',
  uptime: '2012/08/29 18:00:16' }
end

というわけで、これは特に問題なく動作しました。

文字コードの件を別途調べる

でも、Node.jsはutf-8推奨なわけです。その世界では問題なくても、日本には結構古い文字コードも頑固に生き残っています。うちの事務所にもあります。

で、実は今回は当初、sjis-winを使ってる古いデータベースから取ってこようとしたのです。そして見事に文字化けしてしまいました。

そこで、これまで普通のEUCのページを取ってくるのに成功しているnode-iconvで乗り切ろうと思ったのだけれど、これが、当然最近の日本のパッチ( http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.html )などがあたってるというわけでもないようでなかなかうまくいかない。

ということで、急遽、node-iconvについても少し調べてみることにしました。

これです。

node-iconvで使える文字コードを調べてみた
http://qiita.com/items/3cf99d91d3784f5a47c4

51
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
47