跳到主要内容
CNode

nodejs mssql的查询为什么只显示一条记录?【求大神来指点迷津】

问答
Hheixiaoshan发布于 12 年前最后回复 12 年前
1198940

问题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
		???
    });
});

其实他有一个这样的方法,我没太懂该怎么用。

查看回复

回复 (11)

H
heixiaoshan#1112 年前

@saighost 非常感谢啦

H
heixiaoshan#1012 年前

大神来指点一下啊

H
heixiaoshan#912 年前

@saighost

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
		???
    });
});

其实他有一个这样的方法,我没太懂该怎么用。

H
heixiaoshan#812 年前

@saighost tds的地址方便给我一个吗?我搜了下发现好几个。

H
heixiaoshan#712 年前

@saighost 方便给我一个详细点的demo吗?嗯。数据库是05版的。感谢!

H
heixiaoshan#512 年前

@saighost 应该是你认错人了吧。

H
heixiaoshan#412 年前
I
i5ting#312 年前

微软的东西不适合node(主要是服务器的问题,不适合互联网项目),哈哈,node搭配mysql和mongodb比较好

H
heixiaoshan#212 年前

诚邀各位大神关注下。谢谢 @jiyinyiyong @alsotang @leapon @youxiachai

H
heixiaoshan#112 年前

来个人吧。大神@a272121742

参与回复

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