2017-01-30 116 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

如果它對您有幫助,您可以將其標記爲答案,這對面臨與您同樣問題的社區有益。謝謝。 –