我是node.js的初学者,我会问你的建议。使用数据库中的选择,我获得所需的数据(ID,建筑物,楼层,地图)。地图以jpg格式存储为字节数组0x89504E470D0A1A0A0000000D4948 ....我保存到新的数据库ID,建筑物,楼层和缩小的地图(质量通过https://www.npmjs.com/package/images减少),现在是Unicode编码的(http://puu.sh/g6UZ2/90408c7b12.png)。你能告诉我如何将缩小尺寸的地图转换为字节数组,然后将其作为BLOB存储在数据库中。谢谢你,对不起我的英文
var myQueryMaps2 = ' SELECT ' +
'id, budova, patro, mapa ' +
'FROM dbo.cis_mapyBudov';
app.get(' / originalMaps',function(req,res){
var request = new sql.Request(connection);
request.query(' DELETE FROM dbo.cis_mapyNewBudov', function (err) {
if (err) {
console.log(err);
}
});
request.query(myQueryMaps2, function (err, rows, recordset) {
if (!err && res.statusCode === 200) {
for (var i = 0; i < rows.length; i++) {
var insertSQL = "INSERT INTO dbo.cis_mapyNewBudov (id, budova, patro, mapa) VALUES ('" + rows[i].id +
"', '" + rows[i].budova + "', '" + rows[i].patro + "', '" + images(rows[i].mapa).toBuffer('jpg', {quality: 50}) +
"')";
request.query(insertSQL, function (err) {
if (err)
console.log(err);
else
console.log('save');
});
}
} else {
console.log('error original maps', err);
throw new Error('Can not download original maps');
}
});
});
答案 0 :(得分:0)
使用输入参数,将值连接到TSQL几乎总是一个坏主意。
var request = new sql.Request(connection);
request.input('id', rows[i].id);
request.input('budova', rows[i].budova);
request.input('patro', rows[i].patro);
request.input('mapa', sql.VarBinary(MAX), images(rows[i].mapa).toBuffer('jpg', {quality: 50}));
request.query('INSERT INTO dbo.cis_mapyNewBudov (id, budova, patro, mapa) VALUES (@id, @budova, @patro, @mapa)', function (err) {
// ...
});
提示:始终为每个查询创建new Request
。这就是驱动程序的设计方式。重用Request
对象可能会导致意外行为。