Nodejsステップアップ(6)-MySQLデータベースへの接続
21409 ワード
1.ライブラリ連結
MySQLデータベースへの接続にはインストールサポートが必要です
npm install mysql
mysql sever端子で事前にインストールする必要があります
データベースmydb 1を作成する
次にテーブルuserを作成します.
次にnodejsを使用してmysqlデータベースに接続します
しかし、実際に接続を作成するたびにコストがかかり、実行効率に影響します.プール接続mysqlの接続方法:node-mysql
2.接続プール構成の使用
Node-mysqlは現在最も人気のあるnodeの下のmysql駆動であり、mysqlpoolのモジュールである.
次のコードは、getPool関数がcreatePoolで作成したデータベース接続プールオブジェクトを返す接続プールを提供します.
次のコードは、この接続プール、挿入、クエリーの使用方法を示します.注意すべきはconn.release()です.//接続を解放して接続プールに戻すには、操作が終了してから実行する必要があります.そうしないと、後続のデータベース操作がエラーになります.
次に、相互に依存しているため、コードの可読性が特に悪くなる複雑な点を追加削除して変更するデータベース操作を紹介します.これにより、次に空腹フロー制御について説明する「nodejsステップ(7)-async非同期フロー制御」の内容が引き出されます.
MySQLデータベースへの接続にはインストールサポートが必要です
npm install mysql
mysql sever端子で事前にインストールする必要があります
データベースmydb 1を作成する
mysql> CREATE DATABASE mydb1;
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| mydb1 |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
次にテーブルuserを作成します.
create table user(
id int not null primary key auto_increment,
name VARCHAR(100) not null,
pwd VARCHAR(100) not null,
create_date TIMESTAMP NULL DEFAULT now()
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE UNIQUE INDEX t_quiz_IDX_0 on user(name);
次にnodejsを使用してmysqlデータベースに接続します
1 var mysql = require('mysql'); // MySQL
2 // connection
3 var connection = mysql.createConnection({
4 host: 'localhost', //
5 user: 'root', //MySQL
6 password: 'root', //MySQL
7 database: 'mydb1',
8 port: '3306' //
9 });
10 // connection
11 connection.connect(function(err){
12 if(err){
13 console.log('[query] - :'+err);
14 return;
15 }
16 console.log('[connection connect] succeed!');
17 });
18 //----
19 var userAddSql = 'insert into user (name,pwd) values(?,?)';
20 var param = ['fff','123'];
21 connection.query(userAddSql,param,function(err,rs){
22 if(err){
23 console.log('insert err:',err.message);
24 return;
25 }
26 console.log('insert success');
27 });
28 //
29 connection.query('SELECT * from user where id=?',[2], function(err, rs) {
30 if (err) {
31 console.log('[query] - :'+err);
32 return;
33 }
34 for(var i=0;i<rs.length;i++){
35 console.log('The solution is: ', rs[i].uname);
36 }
37 });
38
39 // connection
40 connection.end(function(err){
41 if(err){
42 console.log(err.toString());
43 return;
44 }
45 console.log('[connection end] succeed!');
46 });
しかし、実際に接続を作成するたびにコストがかかり、実行効率に影響します.プール接続mysqlの接続方法:node-mysql
2.接続プール構成の使用
Node-mysqlは現在最も人気のあるnodeの下のmysql駆動であり、mysqlpoolのモジュールである.
次のコードは、getPool関数がcreatePoolで作成したデータベース接続プールオブジェクトを返す接続プールを提供します.
1 var mysql = require('mysql'); // MySQL
2 function OptPool(){
3 this.flag=true; //
4 this.pool = mysql.createPool({
5 host: 'localhost', //
6 user: 'root', //MySQL
7 password: 'root', //MySQL
8 database: 'test',
9 port: '3306' //
10 });
11
12 this.getPool=function(){
return this.pool;
21 }
22 };
23 module.exports = OptPool;
次のコードは、この接続プール、挿入、クエリーの使用方法を示します.注意すべきはconn.release()です.//接続を解放して接続プールに戻すには、操作が終了してから実行する必要があります.そうしないと、後続のデータベース操作がエラーになります.
1 var OptPool = require('./models/OptPool');
2
3 var optPool = new OptPool();
4 var pool = optPool.getPool();
5
6 // SQL
7 //
8 pool.getConnection(function(err,conn){
9 //----
10 var userAddSql = 'insert into user (uname,pwd) values(?,?)';
11 var param = ['eee','eee'];
12 conn.query(userAddSql,param,function(err,rs){
13 if(err){
14 console.log('insert err:',err.message);
15 return;
16 }
17 console.log('insert success');
18 //conn.release(); //
19 })
20 //
21 conn.query('SELECT * from user', function(err, rs) {
22 if (err) {
23 console.log('[query] - :'+err);
24 return;
25 }
26 for(var i=0;i<rs.length;i++){
27 console.log(rs[i].uname);
28 }
29 conn.release(); //
30 });
31 });
次に、相互に依存しているため、コードの可読性が特に悪くなる複雑な点を追加削除して変更するデータベース操作を紹介します.これにより、次に空腹フロー制御について説明する「nodejsステップ(7)-async非同期フロー制御」の内容が引き出されます.
1 var OptPool = require('./models/OptPool');
2
3 var optPool = new OptPool();
4 var pool = optPool.getPool();
5
6 var insertSQL = 'insert into table1(name,pwd) values("conan","123"),("fens.me","456")';
7 var selectSQL = 'select * from table1 limit 10';
8 var deleteSQL = 'delete from table1';
9 var updateSQL = 'update table1 set name="conan update" where name="conan"';
10
11 pool.getConnection(function(err,conn){
12 //delete
13 conn.query(deleteSQL, function (err0, res0) {
14 if (err0) console.log(err0);
15 console.log("DELETE Return ==> ");
16 console.log(res0);
17
18 //insert
19 conn.query(insertSQL, function (err1, res1) {
20 if (err1) console.log(err1);
21 console.log("INSERT Return ==> ");
22 console.log(res1);
23
24 //query
25 conn.query(selectSQL, function (err2, rows) {
26 if (err2) console.log(err2);
27
28 console.log("SELECT ==> ");
29 for (var i in rows) {
30 console.log(rows[i]);
31 }
32
33 //update
34 conn.query(updateSQL, function (err3, res3) {
35 if (err3) console.log(err3);
36 console.log("UPDATE Return ==> ");
37 console.log(res3);
38
39 //query
40 conn.query(selectSQL, function (err4, rows2) {
41 if (err4) console.log(err4);
42
43 console.log("SELECT ==> ");
44 for (var i in rows2) {
45 console.log(rows2[i]);
46 }
47 });
48 });
49 });
50 });
51 });
52 })