使用Node.js连接到SQL Server不';行不通

使用Node.js连接到SQL Server不';行不通,node.js,sql-server,Node.js,Sql Server,我有一个大问题:我想连接到MS SQL Server,但无论我在做什么,它都不起作用。。。我不知道我的错误在哪里 const parse = require("csv-parse/lib/sync"); const fs = require("fs"); const path = require("path"); var mssql = require('mssql/msnodesqlv8'); var iconv = require('iconv-lite'); var http = requ

我有一个大问题:我想连接到MS SQL Server,但无论我在做什么,它都不起作用。。。我不知道我的错误在哪里

const parse = require("csv-parse/lib/sync");
const fs = require("fs");
const path = require("path");
var mssql = require('mssql/msnodesqlv8');
var iconv = require('iconv-lite');
var http = require('http');

// Connection to SSMS Database
var dbConfig = {
    host: 'localhost',
    user: 'user',
    server: 'server',
    database: 'database',
    options: {
        trustedConnection: true,
        useUTC: true
      }
};

var connection = new mssql.Connection(dbConfig, function(err) {
var request = new mssql.Request(connection);

...

 request.query(`INSERT INTO ${richtigername} (${namen}) VALUES (${values})`, function (err, recordset) {

                            if (err) {
                                console.log(err);

                                res.send(recordset)
                            } 

                            mssql.close();


                            });


现在出现错误消息:

TypeError:请求不是函数

将数据导入SQL Server数据库非常困难。。该工具在MySQL上运行良好,但SQL Server非常糟糕

在此之前,我还有两个查询:
request.query(…)
if(err){console.log(err);res.send(recordset)
…另一方面,MySQL非常简单…只是

connection.query(…)
在此之前

// Verbindung zur MySQL Datenbank
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'database'
});

and

 // Verbindung zur Datenbank starten
    connection.connect((error) => {
        if (error) {
            console.error(error);
        } else {

        }

    }) 
}

首先,分配一个连接池,然后使用它来运行SQL。本例使用存储过程,但很容易修改以运行查询

var express = require('express');
var app = express();

app.get('/', function (req, res) {

    var sql = require("mssql");

    // config for your database
    var config = {
        user: 'user',
        password: 'yourpassword',
        server: 'yourserver', 
        database: 'yourdb' 
    };

  new sql.ConnectionPool(config).connect().then(pool => {
    return pool.request()
      // for select query, uncomment .query and comment .input and .execute
      //.query("select * from table1 where id = 2")
      // for stored proc, comment .query and uncomment .input and .execute
      // .input is only needed if proc has params
      .input('p_id', sql.Int, 5)
      .execute('getData')
    }).then(result => {
      let rows = result.recordset
      res.setHeader('Access-Control-Allow-Origin', '*')
      res.status(200).json(rows);
      sql.close();
    }).catch(err => {
      console.log(err);
      res.status(500).send({ message: "${err}"})
      sql.close();
    });

  });

var server = app.listen(5000, function () {
    console.log('Server is running..');
});

首先,SSMS不是数据库,它是一个客户端工具。您正在连接SQL Server。其次,请编辑您的问题并添加以下信息。您是否确实安装了SQL Server?您可以使用客户端工具(SSMS)连接到它吗哦,我知道;)是的,我有sql server express和SSMS,还有SSMS中的数据库;)假设您想从Node.js连接到sql server。本文档部分介绍如何(繁琐),和@Frederic您编写的也不是MySQL查询。您通过字符串插值创建了一个SQL字符串,使您面临SQL注入攻击。您可以在SQL Server中使用相同的字符串,但不能这样做。SQL Server的doc示例演示了如何使用参数。MySQL还支持参数。虽然您不需要按名称传递参数,但可以我们还没有确定您是否安装了SQL Server