English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Node.jsでMySQLクエリを実行する際、Result Objectと呼ばれるオブジェクトがコールバック関数に戻されます。結果オブジェクトは、MySQL Serverのクエリ実行情報を提供する結果セットや属性を含みます。
結果オブジェクトの内容は、MySQL Serverに対して実行されたSQLクエリに依存します。以下のテーブルは、クエリの結果オブジェクト、例えば選択、挿入、更新、削除を説明しています。
MySQLクエリ | 結果オブジェクト |
SELECT FROM | レコードを含む結果セット |
INSERT INTO | 実行状態を含むオブジェクト |
UPDATE | 実行状態を含むオブジェクト |
DELETE FROM | 実行状態を含むオブジェクト |
以下の例を助けに、結果セットのレコードの属性にアクセスする方法と実行状態の属性にアクセスする方法を学びます。
MySQL SELECT FROMクエリ - ResultSetにアクセス
MySQL INSERT INTOクエリ - 結果オブジェクトの属性にアクセス
MySQL UPDATEクエリ-結果オブジェクトの属性にアクセス
MySQL DELETE FROMクエリ-結果オブジェクトの属性にアクセス
結果セットのレコードを配列とレコードの属性としてアクセスするために点(.)演算子を使用できます。
// Node.js MySQL結果オブジェクトの例 // mysqlモジュールをインポートします var mysql = require('mysql'); // 必要な詳細情報を持つ接続変数を作成します var con = mysql.createConnection({ host: "localhost", // mysqlを実行しているサーバーのIPアドレス user: "arjun", // mysqlデータベースのユーザー名 password: "password", // 対応するパスワード database: "studentsDB" // 指定されたデータベースを使用します }); // データベースとの接続を確立します。 con.connect(function(err) { if (err) throw err; // 接続が成功した場合 con.query("SELECT * FROM students", function (err, result, fields) { // 上記のクエリを実行中にエラーが発生した場合、エラーをスローします if (err) throw err; // エラーがなければ、結果が得られます // 結果のすべての行に対してイテレーションを行います Object.keys(result).forEach(function(key) { var row = result[key]; console.log(row.name) }); }); });
ターミナルで上記のプログラムを実行します
ターミナル出力
arjun@arjun-VPCEH26EN:~/ワークスペース/nodejs$ node selectUseResultObject.js ジョン Arjun Prasanth Adarsh Raja Sai Ross Monica Lee Bruce Sukumar
DOT(.)演算子を使用して結果オブジェクトの属性にアクセスできます。
// mysqlモジュールをインポートします var mysql = require('mysql'); // 必要な詳細情報を持つ接続変数を作成します var con = mysql.createConnection({ host: "localhost", // mysqlを実行しているサーバーのIPアドレス user: "arjun", // mysqlデータベースのユーザー名 password: "password", // 対応するパスワード database: "studentsDB" // 指定されたデータベースを使用します }); // データベースとの接続を確立します。 con.connect(function(err) { if (err) throw err; // 接続が成功した場合 var records = [ ['Jack', 16, 82], ['Priya', 17, 88], ['Amy', 15, 74] ]; con.query("INSERT INTO students (name,rollno,marks) VALUES ?", [records], function (err, result, fields) { // 上記のクエリを実行中にエラーが発生した場合、エラーをスローします if (err) throw err; // エラーがなければ、結果が得られます console.log(result); console.log("影響を受けた行数: ", + result.affectedRows); console.log("警告とともに影響を受けたレコード数: ", + result.warningCount); console.log("MySQLサーバからのメッセージ: ", + result.message); }); });
ターミナルで上記のプログラムを実行します
ターミナル出力
arjun@arjun-VPCEH26EN:~/ワークスペース/nodejs$ node MultipleInsertExample.js OkPacket { fieldCount: 0, affectedRows: 3, insertId: 0, serverStatus: 2, warningCount: 0, メッセージ: '&Records: 3 重複: 0 警告: 0', プロトコル41: true, changedRows: 0} 影響を受けた行数: 3 警告とともに影響を受けたレコード数:0 MySQLサーバーからのメッセージ: &Records: 3 重複: 0 警告: 0
DOT(.)演算子を使用して結果オブジェクトの属性にアクセスできます。
// mysqlモジュールをインポートします var mysql = require('mysql'); // 必要な詳細情報を持つ接続変数を作成します var con = mysql.createConnection({ host: "localhost", // mysqlを実行しているサーバーのIPアドレス user: "arjun", // mysqlデータベースのユーザー名 password: "password", // 対応するパスワード database: "studentsDB" // 指定されたデータベースを使用します }); // データベースとの接続を確立します。 con.connect(function(err) { if (err) throw err; // 接続が成功した場合 con.query("UPDATE students SET marks=84 WHERE marks=74", function (err, result, fields) { // 上記のクエリを実行中にエラーが発生した場合、エラーをスローします if (err) throw err; // エラーがなければ、結果が得られます console.log(result); console.log("影響を受けた行数: ", + result.affectedRows); console.log("警告とともに影響を受けたレコード数: ", + result.warningCount); console.log("MySQLサーバからのメッセージ: ", + result.message); }); });
ターミナルで上記のプログラムを実行します
ターミナル出力
arjun@arjun-VPCEH26EN:~/ワークスペース/nodejs$ node UpdateRecordsFiltered.js OkPacket { fieldCount: 0, affectedRows: 3, insertId: 0, serverStatus: 34, warningCount: 0, メッセージ: '(Rows matched: 3 変更: 3 警告: 0', プロトコル41: true, changedRows: 3 } 影響を受けた行数: 3 警告とともに影響を受けたレコード数:0 MySQLサーバーからのメッセージ: (Rows matched: 3 変更: 3 警告: 0
DOT(.)演算子を使用して結果オブジェクトの属性にアクセスできます。
// mysqlモジュールをインポートします var mysql = require('mysql'); // 必要な詳細情報を持つ接続変数を作成します var con = mysql.createConnection({ host: "localhost", // mysqlを実行しているサーバーのIPアドレス user: "arjun", // mysqlデータベースのユーザー名 password: "password", // 対応するパスワード database: "studentsDB" // 指定されたデータベースを使用します }); // データベースに接続します。 con.connect(function(err) { if (err) throw err; // 接続が成功した場合 con.query("DELETE FROM students WHERE rollno>10", function (err, result, fields) { // 上記のクエリを実行中にエラーが発生した場合、エラーをスローします if (err) throw err; // エラーがなければ、結果が得られます console.log(result); console.log("影響を受けた行数: ", + result.affectedRows); console.log("警告とともに影響を受けたレコード数: ", + result.warningCount); console.log("MySQLサーバからのメッセージ: ", + result.message); }); });
ターミナルで上記のプログラムを実行します
ターミナル出力
arjun@arjun-VPCEH26EN:~/ワークスペース/nodejs$ node deleteRecordsFiltered.js OkPacket { fieldCount: 0, affectedRows: 6, insertId: 0, serverStatus: 34, warningCount: 0, メッセージ: '', プロトコル41: true, changedRows: 0} 影響を受けた行数: 6 警告とともに影響を受けたレコード数:0 MySQLサーバからのメッセージ:
このNode.jsチュートリアルでは、Node.js MySQLの結果オブジェクトで結果セットのレコードへのアクセスを学び、例を通じてクエリ実行情報を含む結果オブジェクトの属性にアクセスしました。