【问题标题】:How to query azure SQL from node.js server如何从 node.js 服务器查询 Azure SQL
【发布时间】:2017-08-15 15:32:08
【问题描述】:

我在 azure sql 上查询我的数据库时遇到了一些问题(我对 sql 非常陌生)。我正在按照https://docs.microsoft.com/en-us/azure/sql-database/sql-database-connect-query-nodejs 上的步骤进行操作,但它只包括有关如何读取表格的教程步骤,而不是操作它们。我正在尝试在我的 Node.js 服务器上执行 INSERT 和 DELETE 请求,但我在其中一个节点模块中收到请求错误,这让我认为我正在请求错误的操作。

这里有一些代码:

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

// Create connection to database
var config =
{
    userName: 'user_name',
    password: 'password',
    server: 'server_name',
    options:
    {
        database: '_dbname'
        , encrypt: true
    }
}
var connection = new Connection(config);

// Attempt to connect and execute queries if connection goes through
connection.on('connect', function (err) {
if (err) {
    console.log(err)
}
else {
    queryDatabase();
}
}

//this works fine, it's for initially loading the data from the database
function queryDatabase() {
console.log('\nReading rows from the Table...');
let obj = {};
let objs = [];
let request;
// Read all rows from table
request = new Request(
    "SELECT * FROM [dbo].[TABLE_NAME]",
    function (err, rowCount, rows) {
        console.log('-- Done');
    }
);
//this is for when an admin adds content to the app, SQL table not changing, 
//node.js throws error
socket.on('add item', item => {
    let index = getCollectionIndexById(item.id);
    collections[index].items.push(item.item);
    io.sockets.emit('add item', item);

    request = new Request(`INSERT INTO [dbo].[TABLE_NAME](Id, attr1, attr2, attr3, attr4)
     VALUES (`
        + item.id + ','
        + item.item.attr2 + ','
        + item.item.attr3 + ','
        + item.item.attr4 + ','
        + null, function (err, rowCount, rows) {
            if (err) throw err;
            console.log('> requested db to insert item');
        });
    connection.execSql(request);
    console.log('> item sent to app');
});
//for when the admin removes content from the app, same error 
socket.on('rm item', item => {
    collections[getCollectionIndexById(item.id)].items.splice(item.index, 1);
    io.sockets.emit('rm item', { "id": item.id, index: item.index });

    request = new Request(`DELETE FROM [dbo].[TABLE_NAME] WHERE Id= `
        + item.id + ` AND attr1= ` + item.item.attr1, function (err, rowCount, rows) {
            if (err) throw err;
            console.log('> requested db to remove item')
        });
    connection.execSql(request);

    console.log('> sent request to remove item');

});

确切的错误消息是RequestError: Incorrect syntax near 'esse'.,它位于request.js 中称为tedious 的节点模块之一中。

总之,如果有人知道查询 Azure SQL Db 以进行插入和删除的方法,我们将不胜感激!

【问题讨论】:

    标签: node.js azure azure-sql-database


    【解决方案1】:

    您在“插入”SQL 中错过了)。此外,您当然需要使用单引号设置字符串值。

    更改以下代码行

    request = new Request(`INSERT INTO [dbo].[TABLE_NAME](Id, attr1, attr2, attr3, attr4)
         VALUES (`
            + item.id + ','
            + item.item.attr2 + ','
            + item.item.attr3 + ','
            + item.item.attr4 + ','
            + null, function (err, rowCount, rows) {
                if (err) throw err;
                console.log('> requested db to insert item');
            });
        connection.execSql(request);
    

    request = new Request(`INSERT INTO [dbo].[TABLE_NAME](Id, attr1, attr2, attr3, attr4) VALUES ('${item.id}', '${item.item.attr2}', '${item.item.attr3}', '${item.item.attr4}' null)`, function (err, rowCount, rows) {
        if (err) throw err;
        console.log('> requested db to insert item');
    });
    connection.execSql(request);
    

    【讨论】:

      【解决方案2】:

      您将找到一个示例 here,说明如何使用 NodeJs 和 queryRaw 在表上插入记录。

      conn.queryRaw("INSERT SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) OUTPUT INSERTED.ProductID VALUES ('SQL Server Express 102', 'SQLEXPRESS 102', 0, 0, CURRENT_TIMESTAMP)", function (err, results)
      

      您也可以使用 queryRaw 来删除表中的记录。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2016-09-02
        • 1970-01-01
        • 1970-01-01
        • 2011-01-14
        • 1970-01-01
        • 2019-03-04
        • 2021-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多