簡體   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