问题1: 正常来讲应该显示有500条记录。为什么只显示一条呢,查了相关文档也没说关于这一块的。希望大神指导下!如何才能全部显示出来呢? 代码如下:
Mingo.getsales=function getsales(callback){
var sqlstr="select * from Contract";
var connection = new sql.Connection(connects, function (err) {
if (err) console.log(err);//判断异常
var request = new sql.Request(connection);
request.multiple = true;
request.query(sqlstr, function (err, recordsets) {
if(recordsets.length===0) callback(err,'[]');
console.log(recordsets.length); // return 1
callback(err,recordsets);
});
});
}
结果显示为1。 问题2
var sqlstr="select b.name, sum(a.bldarea) as bldarea,convert(varchar(7),a.qdate,120) as qdate ";
sqlstr+=" from Contract left join project on a.pid=b.pid where name='AAA' group by b.name order by b.name,qdate";
为什么执行这一条sql的结果为空?实际在sql查询分析中是有值的! 诚邀大神@a272121742 md说明还有个方法。但是不太明白该怎么用
Streaming example with one global connection
If you plan to work with large amount of rows, you should always use streaming. Once you enable this, you must listen for events to receive data.
var sql = require('mssql');
var config = {
user: '...',
password: '...',
server: 'localhost', // You can use 'localhost\\instance' to connect to named instance
database: '...',
stream: true, // You can enable streaming globally
options: {
encrypt: true // Use this if you're on Windows Azure
}
}
sql.connect(config, function(err) {
// ... error checks
var request = new sql.Request();
request.stream = true; // You can set streaming differently for each request
request.query('select * from verylargetable'); // or request.execute(procedure);
request.on('recordset', function(columns) {
// Emitted once for each recordset in a query
这里该怎么用,不是太明白,没有看到相应的demo
});
request.on('row', function(row) {
// Emitted for each row in a recordset
?????
});
request.on('error', function(err) {
// May be emitted multiple times
????
});
request.on('done', function(returnValue) {
// Always emitted as the last one
???
});
});
其实他有一个这样的方法,我没太懂该怎么用。
18 回复
getOneFormSQLServer = function (sql, box, callback) {
var conn = new tds.Connection(config.sql_server);
conn.handler = {
error: function(error) {
console.error('Received error', error);
},
message: function(message) {
console.info('Received message', message);
}
}
conn.connect(function(err) {
if (err) {
console.error('connect error', err);
callback(err, null);
} else {
var stmt = conn.createStatement(sql);
stmt.on('row', function(row) {
var d = box(row);
callback(null,d);
});
stmt.on('done', function(done) {
conn.end();
});
stmt.execute();
}
});
};
getAllFormSQLServer = function (sql, box, callback) {
var conn = new tds.Connection(config.sql_server);
conn.handler = {
error: function(error) {
console.error('Received error', error);
},
message: function(message) {
console.info('Received message', message);
}
}
conn.connect(function(err) {
if (err) {
console.error('connect error', err);
callback(err, null);
} else {
var datalist = [];
var stmt = conn.createStatement(sql);
stmt.on('row', function(row) {
var d = box(row);
//callback(null,d);
datalist.push(d);
});
stmt.on('done', function(done) {
conn.end();
callback(null,datalist);
});
stmt.execute();
}
});
};
exports.getHZJBQK = function (blh, callback) {
var sql = "select * from DBO.VIEW_nh_test_inpatientRegister where blh = '"+blh+"'";
getOneFormSQLServer(sql,
function (row) {
var data = {};
data.blh = row.getValue(0).trim();
data.zyh = row.getValue(1).trim();
data.ylhm = row.getValue(2).trim();
data.hz_sfzh = row.getValue(3).trim();
data.jbdm = row.getValue(4).trim();
data.jbmc = dict.gbkToUTF8(row.getBuffer(5)).trim();
data.rysj = tool.formatDate(row.getValue(6));
return data;
},callback);
}
不好意思,两年前的代码了。凑合看吧。我用的tds
Streaming example with one global connection
If you plan to work with large amount of rows, you should always use streaming. Once you enable this, you must listen for events to receive data.
var sql = require('mssql');
var config = {
user: '...',
password: '...',
server: 'localhost', // You can use 'localhost\\instance' to connect to named instance
database: '...',
stream: true, // You can enable streaming globally
options: {
encrypt: true // Use this if you're on Windows Azure
}
}
sql.connect(config, function(err) {
// ... error checks
var request = new sql.Request();
request.stream = true; // You can set streaming differently for each request
request.query('select * from verylargetable'); // or request.execute(procedure);
request.on('recordset', function(columns) {
// Emitted once for each recordset in a query
这里该怎么用,不是太明白,没有看到相应的demo
});
request.on('row', function(row) {
// Emitted for each row in a recordset
?????
});
request.on('error', function(err) {
// May be emitted multiple times
????
});
request.on('done', function(returnValue) {
// Always emitted as the last one
???
});
});
其实他有一个这样的方法,我没太懂该怎么用。