ホームページ > ウェブフロントエンド > jsチュートリアル > Node.js での MySQL 接続プールの使用

Node.js での MySQL 接続プールの使用

亚连
リリース: 2018-06-06 11:20:25
オリジナル
1685 人が閲覧しました

この記事では主に、MySQL 接続プールを使用した Node.js の方法を紹介し、具体的な例に基づいて、関連するモジュールのインストール、接続、クエリ、および MySQL 接続プールを操作するための Node.js のその他の使用スキルを分析します。必要な友人は例を参照してください。この記事では

Node.js が MySQL 接続プールを使用する方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

Nodejs で MySQL を使用する方法

Nodejs を MySQL に接続するには、Nodejs の MysQL ドライバーを使用できます。たとえば、ここでは「node-mysql」を使用してデータベースに接続します。次の方法を使用してデータベースに接続します:

まず、nodejs パッケージ管理ツール (npm) を使用して mysql ドライバーをインストールする必要があります。コマンドラインは次のとおりです:

npm install musql
ログイン後にコピー

次に、js ファイルで mysql を使用するには、次のコードをファイルに追加します:

var mysql = require('mysql');
ログイン後にコピー

次に、このモジュールを使用して MySQL データベースに接続できます。もちろん、データベースに接続するには、MySQL Server のホスト名、ユーザー名、パスワードを指定する必要があります。データベースのタイムゾーン、socketPath、ローカルアドレスなど、他にも多くのオプションを設定できます。

var connection = mysql.createConnection({
  host : "hostName",
  user : "username",
  password: "password"
});
ログイン後にコピー

その後、以下のコードにより新しい接続が確立されます。

connection.connect();
ログイン後にコピー

この接続オブジェクトを使用して、以下のようにデータベースにクエリを実行できます。 connection.escape() メソッドを使用して SQL インジェクションを防ぐことができます。 connection.escape()方法防止sql注入。

connection.query("use database1");
 var strQuery = "select * from table1";
 connection.query( strQuery, function(err, rows){
  if(err) {
   throw err;
  }else{
   console.log( rows );
  }
});
ログイン後にコピー

最后,我们可以用两种方法关闭连接。用connection.end或者connection.destroy

下面的表达式会确保所有队列中的查询在数据库连接关闭前都会被执行。请注意,这里有一个回调函数。

connection.end(function(err){
// Do something after the connection is gracefully terminated.
});
ログイン後にコピー

下面的表达式会立即关闭数据库连接。并且没有回调函数或者触发任何事件。

connection.destroy( );
ログイン後にコピー

Nodejs使用MysQL的连接池

使用连接池可以帮助我们更好的管理数据库连接。数据库连接池可以限制连接的最大数量,复用已有的连接等。

首先,我们需要创建一个连接池:

var mysql = require('mysql');
var pool = mysql.createPool({
 host : "hostName",
 user : "username",
 password: "password"
});
ログイン後にコピー

其次,我们可以从创建的连接池中获取到一个我们需要的连接:

pool.getConnection(function(err, connection){
});
ログイン後にコピー

使用回调函数的参数connection来查询数据库。最后使用connection.realease()

pool.getConnection(function(err, connection){
 connection.query( "select * from table1", function(err, rows){
  if(err) {
   throw err;
  }else{
   console.log( rows );
  }
 });
 connection.release();
});
ログイン後にコピー

最後に、2 つの方法で接続を閉じることができます。 connection.end または connection.destroy を使用します。

次の式は、データベース接続が閉じられる前に、キュー内のすべてのクエリが確実に実行されるようにします。ここにはコールバック関数があることに注意してください。

var connection = mysql.createConnection( { multipleStatements: true } );
ログイン後にコピー

次の式はデータベース接続を即座に閉じます。また、コールバック関数やトリガーされるイベントはありません。

connection.query('select column1; select column2; select column3;', function(err, result){
 if(err){
  throw err;
 }else{
  console.log(result[0]);  // Column1 as a result
  console.log(result[1]);  // Column2 as a result
  console.log(result[2]);  // Column3 as a result
 }
});
ログイン後にコピー

Nodejs は MysQL の接続プールを使用します

接続プールを使用すると、データベース接続をより適切に管理できます。データベース接続プールは、接続の最大数を制限したり、既存の接続を再利用したりすることができます。

まず、接続プールを作成する必要があります:

npm -install -g node-mysql
ログイン後にコピー

次に、作成された接続プールから必要な接続を取得できます:

var mysql=require("mysql");
var pool = mysql.createPool({
 host: 'localhost',
 user: 'user',
 password: 'password',
 database: 'database',
 port: port
});
var query=function(sql,callback){
 pool.getConnection(function(err,conn){
  if(err){
   callback(err,null,null);
  }else{
   conn.query(sql,function(qerr,vals,fields){
    //释放连接
    conn.release();
    //事件驱动回调
    callback(qerr,vals,fields);
   });
  }
 });
};
module.exports=query;
ログイン後にコピー

コールバック関数のパラメータ接続を使用してデータベースをクエリします。最後に、connection.realease() メソッドを使用してデータベース接続を解放します。

var query=require("./lib/mysql.js");
query("select 1 from 1",function(err,vals,fields){
 //do something
});
ログイン後にコピー

複数のクエリ ステートメントを実行する

セキュリティ上の理由から、デフォルトでは複数のクエリ ステートメントの実行は許可されていません。複数のクエリ文の機能を使用するには、データベース接続を作成するときにこの機能をオンにする必要があります:

rrreee

この機能をオンにすると、次の例のように複数のクエリ文を同時に使用できるようになります:

rrreee

node.js での mysql 接続プールの使用

データのクエリ時にプログラムが停止したり、長時間待機したりしたくない場合は、通常、node で接続を開いてから使用することはお勧めしません。すべてのクエリに対してこのリンクを閉じないでください。その理由は、試してみるとわかります

Node.js mysql 接続プール モジュール

1. ノードの mysql モジュールをインストールしますrrreee

2。クラス ライブラリを作成しましょう。これを mysql.js と呼び、内容は次のとおりです。🎜rrreee🎜 3. js クラスで以下を使用します🎜rrreee🎜 上記は、私が皆さんのためにまとめたものです。将来、皆さんのお役に立てれば幸いです。 🎜🎜関連記事: 🎜🎜🎜vue2.0のdev-server.jsには設定メソッドがありません🎜🎜🎜🎜Vue.setを使用してVueにオブジェクト属性メソッドを動的に追加します🎜🎜🎜🎜vueプロパティで動的にバインドする方法フォーム要素の🎜🎜

以上がNode.js での MySQL 接続プールの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート