目次
- 環境情報
- mysqlモジュールのインストール
- DBに接続
- クエリ(SQL実行))
- クエリ(SQL実行):プレースホルダー使用:プレースホルダー使用)
- クエリ(SQL実行):プレースホルダーを使用した複数行実行:プレースホルダーを使用した複数行実行)
- クエリ(SQL実行):列名指定にもプレースホルダーを使用した実行:列名指定にもプレースホルダーを使用した実行)
- トランザクション処理
mysqlモジュールのインストール
npm install mysql
DBに接続
DB情報
接続先:localhost
DB名:testdb
ユーザ名:hoge
パスワード:hoge
接続
var mysql = require('mysql'); var connection = mysql.createConnection({ host : "localhost", //hostname or ip address user : "hoge", //username password : "hoge" //password //database : "testdb" //※1 }); connection.connect();
※1 :ここでDB名を指定するとSQL文でテーブル名の前にDB名を付けなくてよくなるが、今回はあえて指定しない。
接続(エラー処理あり)
var mysql = require('mysql'); var connection = mysql.createConnection({ host : "localhost", //hostname or ip address user : "hoge", //username password : "hoge" //password }); connection.connect(function(err) { if (err) { // エラー文出力 console.error("DB log: database conenect failed"); console.error('error DB connect: ' + err.stack); return; } //接続成功ログ console.log("DB log: database conenect success"); console.log('connected as id ' + connection.threadId); }); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } });
切断(callback引数あり)
connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } });
切断(callback引数無し)
connection.destroy();
クエリ(SQL実行)
前提情報
DB構造
テーブル名:sample |列名|型|primary| |:-:|:-:|:-:| |code|int|○| |user|char|| |age|int|| |||
SQL
- DB作成
create database testdb;
- テーブル作成
create table sample(code int(10) primary key, user char(10), age int(10));
DBデータ
テーブル名:sample |code|user|age| |:-:|:-:|:-:| |1|山田|20| |2|田中|30| |3|木村|10| |||
SQL
- データ作成
insert into sample(code, user, age) values(1, '山田', 20); insert into sample(code, user, age) values(2, '田中', 30); insert into sample(code, user, age) values(3, '木村', 10);
SELECT
SQL
select * from testdb.sample where code = 1;
Code
var code = 1; var sql = "select * from testdb.sample where code = "+ code; connection.query(sql, function (err, results, fields) { if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
INSERT
SQL
insert into testdb.sample(code,user,age) values(4,'中村',25);
Code
var sql = "insert into testdb.sample(code,user,age) values(4,'中村',25);"; connection.query(sql, function (err, results, fields) { if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
UPDATE
SQL
update testdb.sample set age = 60 where code = 4;
Code
var sql = "update testdb.sample set age = 60 where code = 4;"; connection.query(sql, function (err, results, fields) { if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
DELETE
SQL
delete from testdb.sample where code = 1;
Code
var sql = "delete from testdb.sample where code = 1"; connection.query(sql, function (err, results, fields) { if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
クエリ(SQL実行):プレースホルダー使用
SELECT(プレースホルダー使用)
SQL
select * from testdb.sample where code = 1;
Code
var sql = "select * from testdb.sample where code = ?"; var data = [1]; connection.query(sql, data, function (err, results, fields) { if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
INSERT(プレースホルダー使用)
SQL
insert into testdb.sample(code,user,age) values(5,'内田',23);
Code
var sql = "insert into testdb.sample set ?"; var data = {code:5,user:'内田',age:23}; connection.query(sql,data,function(err,results,fields){ if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
UPDATE(プレースホルダー使用)
SQL
update testdb.sample set user = '山本' Where code = 5;
Code
var sql = "update testdb.sample set user = ? Where code = ?"; var data = ['山本',5]; connection.query(sql,data,function(err,results,fields){ if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
DELETE(プレースホルダー使用)
SQL
delete from testdb.sample where code = 1;
Code
var sql = "delete from testdb.sample where code = ?"; var data = [1]; connection.query(sql, data, function (err, results, fields) { if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
クエリ(SQL実行):プレースホルダーを使用した複数行実行
SQL
insert into testdb.sample(code,user,age) values(10,'桂枝雀',59); insert into testdb.sample(code,user,age) values(11,'桂歌丸',81);
Code
var sql = "insert into testdb.sample(code,user,age) values(?),(?)"; var data = [[10,'桂枝雀',59],[11,'桂歌丸',81]]; connection.query(sql, data, function (err, results, fields) { if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
クエリ(SQL実行):列名指定にもプレースホルダーを使用した実行
SQL
select code, user from testdb.sample where code = 1;
Code
var sql = "select ?? from testdb.sample where code = ?"; var columns = ["code", "user"]; var data = [columns,2]; connection.query(sql, data, function (err, results, fields) { if(err){ console.error("sql execute error"); }else{ console.log("sql execute seccess"); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } });
トランザクション処理
connection.beginTransaction(function(err) { if (err) { console.log(err); }else{ var sql = "insert into testdb.sample(code,user,age) values(?),(?)"; var data = [[10,'桂枝雀',59],[11,'桂歌丸',81]]; connection.query(sql, data, function (err, results, fields) { if(err){ console.error("sql execute error"); //エラー時はロールバックして元に戻す connection.rollback(function() { console.log(err); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); }); }else{ console.log("sql execute seccess"); connection.commit(function(err) {//コミット if (err) {//コミット失敗 connection.rollback(function() { console.log(err); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); }); }else{ console.log('success!'); console.log(results); //DB切断 connection.end(function(err){ if(err){ console.log(err);//DB切断エラーログ } }); } }); } }); } });