在nodejs中我们如何向mysql数据库插入单条或多条数据呢?或者说nodejs如何向mysql批量插入数据呢? 我们都知道插入数据使用的是mysql的“INSERT INTO”语句,下面先来看看如何使用nodejs向mysql插入单条数据,请看nodejs mysql的使用示例,向customer表插入一条数据:
var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "yourusername", password: "yourpassword", database: "mydb" }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); var sql = "INSERT INTO customers (name, address) VALUES ('zhangsan', 'beijing')"; con.query(sql, function (err, result) { if (err) throw err; console.log("1 record inserted"); }); });
例如将上方的代码保存到demo_db_insert.js文件中,进入到所存目录中,然后使用nodejs命令运行上面的js文件,命令如下:
C:\Users\YourName>node demo_db_insert.js
以上nodejs输出的结果为:
Connected! 1 record inserted
如何使用nodejs向mysql中插入多条数据呢,我们需要把mysql插入语句改成如下这样,values的值应该用“?”来代替,:
INSERT INTO customers (name, address) VALUES ?
请看示例:
var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "yourusername", password: "yourpassword", database: "mydb" }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); var sql = "INSERT INTO customers (name, address) VALUES ?"; var values = [ ['John', 'Highway 71'], ['Peter', 'Lowstreet 4'], ['Amy', 'Apple st 652'], ['Hannah', 'Mountain 21'], ['Michael', 'Valley 345'], ['Sandy', 'Ocean blvd 2'], ['Betty', 'Green Grass 1'], ['Richard', 'Sky st 331'], ['Susan', 'One way 98'], ['Vicky', 'Yellow Garden 2'], ['Ben', 'Park Lane 38'], ['William', 'Central st 954'], ['Chuck', 'Main Road 989'], ['Viola', 'Sideway 1633'] ]; con.query(sql, [values], function (err, result) { if (err) throw err; console.log("Number of records inserted: " + result.affectedRows); }); });
从上面的执行语句可以看出,我们把上方values的问号“?”部分的值用[myValues]来代替,当我们使用nodejs命令运行上方的文件,就可以将数据批量插入到mysql数据库中了,输出如下结果:
Connected! Number of records inserted: 14
其实result的完整结果是这样的,只是小编取了其中一个“affectedRows”字段的值而已:
{ fieldCount: 0, affectedRows: 14, insertId: 0, serverStatus: 2, warningCount: 0, message: '\'Records:14 Duplicated: 0 Warnings: 0', protocol41: true, changedRows: 0 }