目次
- 環境情報
- 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切断エラーログ
}
});
}
});
}
});
}
});