繁体   English   中英

Node.js 查询未将数据插入 Azure SQL 数据库

[英]Node.js query not inserting data into Azure SQL database

这是我的index.js代码。 现在我制作了一个快速服务器,以便能够使用/register来创建一个帐户。 我插入前端的所有数据都很好。

如果我使用不同的代码,我可以连接并查看行。 它很好地进入我的查询数据库并且所有值都很好,但是它返回无效的列名并且返回的列名表示它无效并且是我在前端输入的内容。 那么我对索引中的 SQL 查询做错了吗? 桌子已经做好了。 关于我做错了什么的任何帮助。

就像我对用户名进行测试并注册它会返回无效的列名“测试”

const express = require("express");
const cors = require("cors");
const app = express();

app.use(express.json({
    type: ['application/json', 'text/plain']
  }));
app.use(cors());

const { Connection, Request } = require("tedious");

// Create connection to database
const config = {
  authentication: {
    options: {
      userName: "username", // update me
      password: "password" // update me
    },
    type: "default"
  },
  server: "dragonfitness.database.windows.net", // update me
  options: {
    database: "dragonfitness", //update me
    encrypt: true
  }
};

const connection = new Connection(config);

// Attempt to connect and execute queries if connection goes through
connection.on("connect", err => {
  if (err) {
    console.error(err.message);
  } else {
    console.log("Server Running and Connected")
  }
});

app.post("/register", (req, res)=> {
    const firstname = req.body.firstname;
    const lastname = req.body.lastname;
    const username = req.body.username;
    const password = req.body.password;
    const email = req.body.email;

    queryDatabase(firstname, lastname, username, password, email);
})

connection.connect();

function queryDatabase(firstname, lastname, username, password, email ) {
  console.log("testing");

  var sql = "INSERT dbo.user_info(first_name, last_name, user_name, password, email) VALUES ("+firstname+", "+lastname+", "+username+", "+password+", "+email+")"
  console.log('query========='+sql)
  // Read all rows from table
  const request = new Request(sql,
    (err, result) => {
      if (err) {
        console.error(err.message);
      } else {
        console.log('worked');
      }
    }
  );
  connection.execSql(request);
}

app.listen(1433, () => {
    console.log("running server");
});

您不应在 sql 命令中连接字符串值,而应使用参数化查询。

请参阅以下示例:

function inputParameters() {
  // Values contain variables idicated by '@' sign
  const sql = `INSERT INTO ${table} (uniqueIdCol, intCol, nVarCharCol) VALUES (@uniqueIdVal, @intVal, @nVarCharVal)`;
  const request = new Request(sql, (err, rowCount) => {
    if (err) {
      throw err;
    }

    console.log('rowCount: ', rowCount);
    console.log('input parameters success!');
    outputParameters();
  });

  // Setting values to the variables. Note: first argument matches name of variable above.
  request.addParameter('uniqueIdVal', TYPES.UniqueIdentifier, 'ba46b824-487b-4e7d-8fb9-703acdf954e5');
  request.addParameter('intVal', TYPES.Int, 435);
  request.addParameter('nVarCharVal', TYPES.NVarChar, 'hello world');

  connection.execSql(request);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM