2017-01-30 62 views
0

我想使用node.js连接到Azure SQL数据库。我在MSDN博客中找到了一个文档,并且看到我直接使用它们的源代码进行连接。我输入了正确的凭证并成功连接到数据库。无法使用node.js连接到Azure SQL(繁琐的模块)

但是,当我执行查询时,它说无效的对象名称,我的表是dbo.Users。问题是什么?

Please find the error message here

var Connection = require('tedious').Connection; 
var config = { 
    userName: 'myusername', 
    password: 'mypw', 
    server: 'myserver', 
    // When you connect to Azure SQL Database, you need these next options. 
    options: { encrypt: true, database: 'mydb' } 
}; 
var connection = new Connection(config); 
connection.on('connect', function (err) { 
    // If no error, then good to proceed. 
    console.log("Connected"); 
    executeStatement(); 
}); 

var Request = require('tedious').Request; 
var TYPES = require('tedious').TYPES; 

function executeStatement() { 
    request = new Request("SELECT * FROM dbo.Users;", function (err) { 
    if (err) { 
     console.log(err); 
    } 
}); 
var result = ""; 
request.on('row', function (columns) { 
    columns.forEach(function (column) { 
     if (column.value === null) { 
      console.log('NULL'); 
     } else { 
      result += column.value + " "; 
     } 
    }); 
    console.log(result); 
    result = ""; 
}); 

request.on('done', function (rowCount, more) { 
    console.log(rowCount + ' rows returned'); 
}); 
connection.execSql(request); 
} 
+0

我测试了你的代码在我身边,它工作正常。你能否仔细检查你的Azure SQL数据库中是否有特定的表“用户”。并仔细检查您使用的数据库模式是否为'dbo'。并尝试删除查询语句中的'dbo'。期待您的更新。 –

+0

我检查了我的数据库信息。我发现我的表名是“Table”而不是“Users”,模式是dbo。 –

+0

但是,当我使用“SELECT * FROM Table;”时或“SELECT * FROM dbo.Table;”在查询行中,它显示错误消息“关键字表格附近的语法错误” –

回答

0

根据您的意见,因为你原来的问题,你刚才弄错表名作为

我检查我的数据库信息。我发现我的表名是“Table”而不是“Users”,模式是dbo。

现在你所面临的问题:

“的关键词表附近有语法错误”。

由于Table是MSSQL中的关键字,因此您可以在https://msdn.microsoft.com/en-us/library/ms189822.aspx中找到它。在SQL语句中,如果表名与任何关键字发生冲突,我们将使用[]来包含表名。

尝试使用SELECT top 1 * FROM [Table]。此外,最好重命名名为Table的表以解决冲突。

+0

谢谢!有用! –

+0

如果它对您有帮助,您可以将其标记为答案,这对面临与您同样问题的社区有益。谢谢。 –