无法使用node.js连接到Azure SQL(繁琐的模块)

时间:2017-01-30 16:37:34

标签: sql node.js azure

我想使用node.js连接到Azure SQL数据库。我在MSDN博客中找到了一个文档,看到我直接使用他们的源代码进行连接。我输入了正确的凭据并成功连接到数据库。

但是,当我执行查询时,它表示无效的对象名称,我的表是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);
}  

1 个答案:

答案 0 :(得分:0)

根据您的评论,作为原始问题,您只是将表名误认为

  

我已检查过我的数据库信息。我发现我的表名是"表"而不是"用户",而架构是dbo。

现在你面临问题:

  

"关键字Table"。

附近的语法不正确

由于 var settings = new JsonSerializerSettings() { Formatting = Formatting.Indented, TypeNameHandling = TypeNameHandling.All, TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple, Converters = { new TypeConverter() } }; Console.WriteLine(JsonConvert.SerializeObject(new Foo(), settings)); 是MSSQL中的关键字,您可以在https://msdn.microsoft.com/en-us/library/ms189822.aspx中找到它。在SQL语句中,如果表名与任何关键字冲突,我们将使用Table来包含表名。

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