跳到主要内容
CNode

mysql 模块如何实现批量Insert保存?

问答
Zzhb0810发布于 10 年前最后回复 10 年前
464540

如题,下边是我写的模块代码实现,求大神帮忙看看,谢谢! 测试数据是

fields = "f1,f2,f3";
values = [[1,2,3],[4,5,6]];

var mysql = require('mysql');

var DbUtil = function(dbConfig){
	this.dbConfig = dbConfig;
}
DbUtil.prototype.batchSave = function(tableName, fields, values, callback){
	var sql = "INSERT INTO " + tableName + "(" + fields + ")  VALUES (?) ";
	var conn = null;

	try{
		conn = this.createConnection();
		//sql = mysql.format(sql, values);
		console.log(sql);
		var query = conn.query(sql, values, function(err, results){
			if(err){
				//console.log(data);
				console.log(sql);
			}
			callback(err, results);	
			conn.end();
		});

	}catch(err){
		if(conn){
			conn.end();
		}
		//console.log(sql);
		//console.log(err);
	}
}

exports.getInstance = function(dbConfig){
	return new DbUtil(dbConfig);
}
查看回复

回复 (4)

I
im-here#410 年前
引用 zhb0810@imhered mysql 5.7的 我试了可以啊

@zhb0810 哦,我用的5.6。原来如此。

I
im-here#210 年前

你这个能同时插入2行记录?mysql模块版本多少? 我测试了下 只能把[1,2,3]这条记录插入吧。

Z
zhb0810#110 年前

找到原因了

var query = conn.query(sql, values, function(err, results){
			if(err){
				//console.log(data);
				console.log(sql);
			}
			callback(err, results);	
			conn.end();
});

应该改为
var query = conn.query(sql, [values], function(err, results){
			if(err){
				//console.log(data);
				console.log(sql);
			}
			callback(err, results);	
			conn.end();
});

测试通过!

参与回复

登录后即可参与回复。登录