Node.js MySQL 结果对象

在Node.js中执行MySQL查询时,名为Result Object的对象将返回到回调函数。结果对象包含提供有关MySQL Server中查询执行信息的结果集或属性。

Node.js MySQL结果对象

结果对象的内容取决于对MySQL Server进行的SQL查询。下表内容描述了查询的结果对象,例如选择,插入,更新和删除。

MySQL 查询结果对象
SELECT FROM包含记录的结果集
INSERT INTO包含执行状态的对象
UPDATE包含执行状态的对象
DELETE FROM

包含执行状态的对象

我们将在以下示例的帮助下了解如何访问结果集中记录的属性以及如何访问执行状态的属性。

  • MySQL SELECT FROM 查询– 访问ResultSet

  • MySQL INSERT INTO 查询–访问结果对象的属性

  • MySQL UPDATE 查询-访问结果对象的属性

  • MySQL DELETE FROM 查询-访问结果对象的属性

示例– MySQL SELECT FROM查询 – 访问ResultSet

我们可以使用点(.)运算符将结果集中的记录作为数组和记录的属性来访问。

// 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:~/workspace/nodejs$ node selectUseResultObject.js 
John
Arjun
Prasanth
Adarsh
Raja
Sai
Ross
Monica
Lee
Bruce
Sukumar

示例– MySQL INSERT INTO查询

我们可以使用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("Number of rows affected : " + result.affectedRows); 
    console.log("Number of records affected with warning : " + result.warningCount); 
    console.log("Message from MySQL Server : " + result.message); 
  }); 
 });

使用终端中的节点运行以上程序

终端输出

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

示例– MySQL UPDATE查询

我们可以使用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("Number of rows affected : " + result.affectedRows); 
    console.log("Number of records affected with warning : " + result.warningCount); 
    console.log("Message from MySQL Server : " + result.message); 
  }); 
 });

使用终端中的节点运行以上程序

终端输出

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

示例– MySQL从查询中删除

我们可以使用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("Number of rows affected : " + result.affectedRows); 
    console.log("Number of records affected with warning : " + result.warningCount); 
    console.log("Message from MySQL Server : " + result.message); 
  }); 
 });

使用终端中的节点运行以上程序

终端输出

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 –结果对象中,我们学习了访问结果集的记录,并通过示例访问了包含有关查询执行信息的结果对象的属性。