gpt4 book ai didi

sql - Nodejs 乏味的 Mssql 无效状态

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:51 41 4
gpt4 key购买 nike

我有一个在本地机器上运行 Ubuntu 的虚拟盒子。我已经安装了 nodejs 以及繁琐的 mssql 驱动程序。我正在尝试从查询中从远程 mssql 服务器中提取数据并返回 json。

我已经阅读了相当多的文档,我想回答的第一个问题是您是否必须在 Windows 机器上运行 Nodejs 才能连接到 mssql 服务器?

(我的印象是使用标准的 nodejs windows 驱动程序时就是这种情况。)

第二个问题我已经完成了我的所有过程并且 Node 服务器运行良好但是当我进行 mssql 调用时我收到以下错误:

Invalid state; requests can only be made in the LoggedIn state, not the SentLogin7WithStandardLogin state

我还没有发现其他人遇到过与我相同情况的此错误。我已尝试按照此修复程序中的建议发送带有对象格式的请求。

How do I connect to SQL Azure from NodeJS/Tedious?

我仍然遇到与之前提到的相同的错误。所以这是代码。我正在使用 restify,希望只是为我的 nodejs 服务器制作一个 Restful api,并从我的 mssql 调用中吐回 json。

var restify = require('restify');
var Connection = require('tedious').Connection;
var server = restify.createServer();

server.listen(8080,function(){
console.log('%s listening at %s',server.name,server.url);
server.get('/GetInfo',GetInfo);
});

function GetInfo(req, res, next){

console.log('Starting GetInfo function ...');
res.header('Content-Type:application/json');

var config = {
user:'awesomeusername',
password:'awesomepassword',
server:'coolservername',
options:{
encrypt:true,
database:'TableName'
}
};
var connection = new Connection(config);
var Request = require('tedious').Request;

var sql = "SELECT ColumnName FROM Database.dbo.TableName";
connection.on('connect',function(err){
request = new Request(sql,function(err,rowCount){
if(err){
res.write(err);
console.log('got an error %s',err)
}else{
res.write(rowCount+'rows');
}
});

request.on('row',function(columns){
columns.forEach(function(column){
res.write(column.value);
});

});

connection.execSql(request);
});

}

所以你有我是一个完全的 nodejs 新手我想我会试一试。任何提示或信息表示赞赏。提前致谢。

最佳答案

1) 不,使用 Tedious 时,您不必在 Windows 机器上运行代码。它是用纯 javascript 编写的,应该可以在任何 nodejs 工作的地方工作。

2) 首先,我建议您升级到最新的 Tedious 0.2.x。这是一个有很多改进的主要版本。接下来,我建议您检查您的代码,因为您发布的代码片段的左括号 { 少于右括号 }

基本上你的问题是你在连接建立之前调用 connection.execSql(request); 或者不管连接是否成功。 New Tedious 在连接错误处理方面做了一些改进,也许它可以帮助您解决问题。

关于sql - Nodejs 乏味的 Mssql 无效状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22544261/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com