我想使用node.js连接到Azure SQL数据库。我在MSDN博客中找到了一个文档,看到我直接使用他们的源代码进行连接。我输入了正确的凭据并成功连接到数据库。
但是,当我执行查询时,它表示无效的对象名称,我的表是dbo.Users。问题是什么?
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 :(得分: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]
的表以解决冲突。