Node.js で MySQL に接続する
この章では、Node.js を使用して MySQL に接続し、データベースを操作する方法を紹介します。
MySQL の基本的な知識がない場合は、当サイトのチュートリアルを参照してください:MySQL チュートリアル。
本チュートリアルで使用する Websites テーブルの SQL ファイル:websites.sql。
ドライバーのインストール
本チュートリアルでは、淘宝(タオバオ)カスタマイズの cnpm コマンドを使用してインストールします:
$ cnpm install mysql
データベースへの接続
以下のインスタンスでは、実際の設定に合わせてデータベースのユーザー名、パスワード、データベース名を変更してください:
test.js ファイルのコード:
以下のコマンドを実行すると、出力結果は次のようになります:
The solution is: 2
データベース接続パラメータの説明:
| パラメータ | 説明 |
|---|---|
| host | ホストアドレス(デフォルト:localhost) |
| user | ユーザー名 |
| password | パスワード |
| port | ポート番号(デフォルト:3306) |
| database | データベース名 |
| charset | 接続文字セット(デフォルト:'UTF8_GENERAL_CI'、文字セットのアルファベットはすべて大文字にする必要があります) |
| localAddress | このIPはTCP接続に使用されます(オプション) |
| socketPath | Unixドメインパスに接続します。host と port を使用する場合は無視されます。 |
| timezone | タイムゾーン(デフォルト:'local') |
| connectTimeout | 接続タイムアウト(デフォルト:制限なし。単位:ミリ秒) |
| stringifyObjects | オブジェクトをシリアライズするかどうか |
| typeCast | 列の値をローカルのJavaScript型の値に変換するかどうか(デフォルト:true) |
| queryFormat | カスタムクエリ文のフォーマット方法 |
| supportBigNumbers | データベースがbigintまたはdecimal型の列をサポートする場合、このオプションをtrueに設定する必要があります(デフォルト:false) |
| bigNumberStrings | supportBigNumbersとbigNumberStringsを有効にすると、bigintまたはdecimal列がJavaScriptの文字列型で返されます(デフォルト:false) |
| dateStrings | timestamp、datetime、date型をJavaScriptのDate型ではなく、文字列型で返します(デフォルト:false) |
| debug | デバッグを有効にする(デフォルト:false) |
| multipleStatements | 1つのクエリ内で複数のMySQLステートメントを許可するかどうか(デフォルト:false) |
| flags | 接続フラグを変更するために使用します |
| ssl | sslパラメータ(crypto.createCredentialsパラメータと同じ形式)またはssl設定ファイル名を含む文字列を使用します。現在はAmazon RDSの設定ファイルのみがバンドルされています。 |
詳細は以下を参照してください:https://github.com/mysqljs/mysql
データベース操作(CRUD)
データベース操作を行う前に、当サイトが提供する Websites テーブルの SQL ファイルをwebsites.sqlMySQL データベースにインポートする必要があります。
本チュートリアルでテストするMySQLユーザー名は root、パスワードは 123456、データベースは test です。ご自身の設定に応じて変更してください。
データのクエリ
上記で提供した SQL ファイルをデータベースにインポートした後、以下のコードを実行するとデータをクエリできます:
データのクエリ
以下のコマンドを実行すると、出力結果は次のようになります:
$ node test.js
--------------------------SELECT----------------------------
[ RowDataPacket {
id: 1,
name: 'Google',
url: 'https://www.google.cm/',
alexa: 1,
country: 'USA' },
RowDataPacket {
id: 2,
name: '淘宝',
url: 'https://www.taobao.com/',
alexa: 13,
country: 'CN' },
RowDataPacket {
id: 3,
name: 'サンプル',
url: 'http://www.example.com/',
alexa: 4689,
country: 'CN' },
RowDataPacket {
id: 4,
name: '微博',
url: 'http://weibo.com/',
alexa: 20,
country: 'CN' },
RowDataPacket {
id: 5,
name: 'Facebook',
url: 'https://www.facebook.com/',
alexa: 3,
country: 'USA' } ]
------------------------------------------------------------
データの挿入
データテーブル websites にデータを挿入できます:
データの挿入
以下のコマンドを実行すると、出力結果は次のようになります:
$ node test.js
--------------------------INSERT----------------------------
INSERT ID: OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 6,
serverStatus: 2,
warningCount: 0,
message: '',
protocol41: true,
changedRows: 0 }
-----------------------------------------------------------------
実行が成功したら、データテーブルを確認すると、追加されたデータを確認できます:

データの更新
データベースのデータを修正することもできます:
データの更新
以下のコマンドを実行すると、出力結果は次のようになります:
--------------------------UPDATE---------------------------- UPDATE affectedRows 1 -----------------------------------------------------------------
実行が成功したら、データテーブルを確認すると、更新されたデータを確認できます:

データの削除
以下のコードを使用して、id が 6 のデータを削除できます:
データの削除
以下のコマンドを実行すると、出力結果は次のようになります:
--------------------------DELETE---------------------------- DELETE affectedRows 1 -----------------------------------------------------------------
実行が成功したら、データテーブルを確認すると、id=6 のデータが削除されたことを確認できます:
