在Node.js中執(zhí)行MySQL查詢時(shí),名為Result Object的對象將返回到回調(diào)函數(shù)。結(jié)果對象包含提供有關(guān)MySQL Server中查詢執(zhí)行信息的結(jié)果集或?qū)傩浴?/p>
結(jié)果對象的內(nèi)容取決于對MySQL Server進(jìn)行的SQL查詢。下表內(nèi)容描述了查詢的結(jié)果對象,例如選擇,插入,更新和刪除。
MySQL 查詢 | 結(jié)果對象 |
SELECT FROM | 包含記錄的結(jié)果集 |
INSERT INTO | 包含執(zhí)行狀態(tài)的對象 |
UPDATE | 包含執(zhí)行狀態(tài)的對象 |
DELETE FROM | 包含執(zhí)行狀態(tài)的對象 |
我們將在以下示例的幫助下了解如何訪問結(jié)果集中記錄的屬性以及如何訪問執(zhí)行狀態(tài)的屬性。
MySQL SELECT FROM 查詢– 訪問ResultSet
MySQL INSERT INTO 查詢–訪問結(jié)果對象的屬性
MySQL UPDATE 查詢-訪問結(jié)果對象的屬性
MySQL DELETE FROM 查詢-訪問結(jié)果對象的屬性
我們可以使用點(diǎn)(.)運(yùn)算符將結(jié)果集中的記錄作為數(shù)組和記錄的屬性來訪問。
// Node.js MySQL結(jié)果對象示例 // 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("SELECT * FROM students", function (err, result, fields) { // 如果在執(zhí)行上述查詢時(shí)出現(xiàn)任何錯(cuò)誤,則拋出錯(cuò)誤 if (err) throw err; // 如果沒有錯(cuò)誤,您將得到結(jié)果 // 對結(jié)果中的所有行進(jìn)行迭代 Object.keys(result).forEach(function(key) { var row = result[key]; console.log(row.name) }); }); });
使用終端中的節(jié)點(diǎn)運(yùn)行以上程序
終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node selectUseResultObject.js John Arjun Prasanth Adarsh Raja Sai Ross Monica Lee Bruce Sukumar
我們可以使用DOT(.)運(yùn)算符訪問結(jié)果對象的屬性。
// 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 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) { // 如果在執(zhí)行上述查詢時(shí)出現(xiàn)任何錯(cuò)誤,則拋出錯(cuò)誤 if (err) throw err; // 如果沒有錯(cuò)誤,您將得到結(jié)果 console.log(result); console.log("Number of rows affected : " + result.affectedRows); console.log("Number of records affected with warning : " + result.warningCount); console.log("Message from MySQL Server : " + result.message); }); });
使用終端中的節(jié)點(diǎn)運(yùn)行以上程序
終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node MultipleInsertExample.js OkPacket { fieldCount: 0, affectedRows: 3, insertId: 0, serverStatus: 2, warningCount: 0, message: '&Records: 3 Duplicates: 0 Warnings: 0', protocol41: true, changedRows: 0 } Number of rows affected : 3 Number of records affected with warning : 0 Message from MySQL Server : &Records: 3 Duplicates: 0 Warnings: 0
我們可以使用DOT(.)運(yùn)算符訪問結(jié)果對象的屬性。
// 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 建立與數(shù)據(jù)庫的連接。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("UPDATE students SET marks=84 WHERE marks=74", function (err, result, fields) { // 如果在執(zhí)行上述查詢時(shí)出現(xiàn)任何錯(cuò)誤,則拋出錯(cuò)誤 if (err) throw err; // 如果沒有錯(cuò)誤,您將得到結(jié)果 console.log(result); console.log("Number of rows affected : " + result.affectedRows); console.log("Number of records affected with warning : " + result.warningCount); console.log("Message from MySQL Server : " + result.message); }); });
使用終端中的節(jié)點(diǎn)運(yùn)行以上程序
終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node UpdateRecordsFiltered.js OkPacket { fieldCount: 0, affectedRows: 3, insertId: 0, serverStatus: 34, warningCount: 0, message: '(Rows matched: 3 Changed: 3 Warnings: 0', protocol41: true, changedRows: 3 } Number of rows affected : 3 Number of records affected with warning : 0 Message from MySQL Server : (Rows matched: 3 Changed: 3 Warnings: 0
我們可以使用DOT(.)運(yùn)算符訪問結(jié)果對象的屬性。
// 引入mysql模塊 var mysql = require('mysql'); // 創(chuàng)建具有所需詳細(xì)信息的連接變量 var con = mysql.createConnection({ host: "localhost", // 運(yùn)行mysql的服務(wù)器的IP地址 user: "arjun", // mysql數(shù)據(jù)庫的用戶名 password: "password", // 對應(yīng)的密碼 database: "studentsDB" // 使用指定的數(shù)據(jù)庫 }); // 連接到數(shù)據(jù)庫。 con.connect(function(err) { if (err) throw err; // 如果連接成功 con.query("DELETE FROM students WHERE rollno>10", function (err, result, fields) { // 如果在執(zhí)行上述查詢時(shí)出現(xiàn)任何錯(cuò)誤,則拋出錯(cuò)誤 if (err) throw err; // 如果沒有錯(cuò)誤,您將得到結(jié)果 console.log(result); console.log("Number of rows affected : " + result.affectedRows); console.log("Number of records affected with warning : " + result.warningCount); console.log("Message from MySQL Server : " + result.message); }); });
使用終端中的節(jié)點(diǎn)運(yùn)行以上程序
終端輸出
arjun@arjun-VPCEH26EN:~/workspace/nodejs$ node deleteRecordsFiltered.js OkPacket { fieldCount: 0, affectedRows: 6, insertId: 0, serverStatus: 34, warningCount: 0, message: '', protocol41: true, changedRows: 0 } Number of rows affected : 6 Number of records affected with warning : 0 Message from MySQL Server :
在本Node.js教程– Node.js MySQL –結(jié)果對象中,我們學(xué)習(xí)了訪問結(jié)果集的記錄,并通過示例訪問了包含有關(guān)查詢執(zhí)行信息的結(jié)果對象的屬性。