NodeJS que utiliza mssql para conectarse a SQLServer aparece "Sintaxis incorrecta cerca de la palabra clave \ 'usuario \'".

"Sintaxis incorrecta cerca de la palabra clave 'usuario'". Recientemente se produjo un error al usar el módulo mssql de NodeJS para conectarse a la base de datos SQLServer. Google descubrió que usé usuario como indicador en SQLServer, pero el usuario en SQLServer es una palabra clave reservada. No se puede usar como nombre de tabla o nombre de variable. Entonces, la solución es muy simple, simplemente cambie el nombre del usuario de la tabla a t_user u otro nombre.

Defina el usuario de estructura de tabla en SQLServer y agregue datos a él

Estoy usando el sistema Windows 10, la base de datos SQLServer2012 está instalada en el sistema local, puede usar SQL Server Management Studio o Navicat Premium 12 y otras herramientas para conectarse a la base de datos SQLServer. Solía usar esta base de datos Navicat Premium herramienta 12 cliente para conectarse a la base de datos SQL Server, creada en Navicat Premium 12 en la base de datos UserDB, a continuación, crear una tabla de usuario
, la estructura de la tabla se define como sigue:
estructura de tabla de usuario
añadir unas tablas para el usuario Un registro, como se muestra a continuación:
Datos en la tabla de usuario
El script SQL de la tabla de usuario correspondiente es el siguiente:

/*
Navicat Premium Data Transfer

Source Server         : localhost_SqlServer
Source Server Type    : SQL Server
Source Server Version : 11002100
Source Host           : localhost:1433
Source Catalog        : UserDB
Source Schema         : dbo

Target Server Type    : SQL Server
Target Server Version : 11002100
File Encoding         : 65001

Date: 06/03/2020 07:50:41
*/


-- ----------------------------
-- Table structure for user
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[user]') AND type IN ('U'))
   DROP TABLE [dbo].[user]
GO

CREATE TABLE [dbo].[user] (
 [name] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
 [age] int  NULL,
 [sex] tinyint  NULL
)
GO

ALTER TABLE [dbo].[user] SET (LOCK_ESCALATION = TABLE)
GO


-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO [dbo].[user]  VALUES (N'小明', N'23', N'1')
GO

INSERT INTO [dbo].[user]  VALUES (N'王五', N'21', N'1')
GO

INSERT INTO [dbo].[user]  VALUES (N'小红', N'20', N'0')
GO

INSERT INTO [dbo].[user]  VALUES (N'小丽', N'22', N'0')
GO

Configure el entorno NodeJS, instale Node y NPM, VSCode y otros IDEs por adelantado, y luego instale el módulo mssql en el terminal bajo el directorio del proyecto VSCode

El módulo mssql es un módulo npm para conectarse a la base de datos SQLServer bajo NodeJS. Su dirección npm es: https://www.npmjs.com/package/mssql El
comando de instalación es el siguiente:

npm install mssql

Use mssql para conectarse a SQLServer en NodeJS y consultar la tabla de usuario en la base de datos UserDB

Cree un archivo mssqlTest.js en el directorio correspondiente en VSCode, el código es el siguiente:

// mssql模块的简单使用
// https://www.npmjs.com/package/mssql
var sql = require('mssql');

// DB configuration
var dbConfig = {
 user: 'sa',
 password: '1030',
 server: 'localhost',
 database: 'UserDB',
 port: 1433,
 pool: {
     max: 10,
     min: 0,
     idleTimeoutMillis: 30000
 }
};

// 查询所有的用户信息
function getAllUsers() {
 var conn = new sql.ConnectionPool(dbConfig);
 //console.log(conn);
 var req = new sql.Request(conn);
 conn.connect(function (err) {
     if (err) {
         console.log(err);
         return;
     }
     // 查询user表
     req.query("SELECT * FROM user", function (err, recordset) {
         if (err) {
             console.log(err);
             return;
         }
         else {
             console.log(recordset);
         }
         conn.close();
     });
 });
 }
 
// 查询所有的用户信息
getAllUsers();

El código anterior utiliza principalmente el módulo mssql para conectarse a la base de datos SQLServer. Primero, configure la información del grupo de conexiones de la base de datos SQLServer y luego consulte la tabla de usuario e imprima los resultados después de la consulta. Al ejecutar en VSCode, no esperaba que ocurriera el siguiente error. La captura de pantalla se muestra en la figura a continuación. Mostrar: El
Captura de pantalla de error
mensaje de error "Sintaxis incorrecta cerca de la palabra clave 'usuario'." Entonces, la búsqueda de Gogole descubrió que muchas personas también tienen este problema:
Mensaje de error
En el jardín del blog [Sintaxis incorrecta cerca de la palabra clave 'usuario'. Solución] (Sintaxis incorrecta cerca La palabra clave 'usuario'. Solución) encontró esta publicación de blog
del blogger Langji Tianya, la razón es: en postgresql, sql99 y sql92 todos usan usuario como palabra reservada. Como es una palabra reservada, no se puede usar.
La solución es cambiar el nombre de usuario de la tabla a t_user u otro nombre. Este error se describe en detalle
en la sintaxis incorrecta de c # cerca de la pregunta clave 'usuario' en https://stackoverflow.com :

Microsoft SQL Server utiliza palabras clave reservadas para definir, manipular y acceder a bases de datos.Las palabras clave reservadas son parte de la gramática del lenguaje Transact-SQL que utiliza SQL Server para analizar y comprender las instrucciones y lotes de Transact-SQL. Aunque es sintácticamente posible para utilizar palabras clave reservadas de SQL Server como identificadores y nombres de objetos en los scripts de Transact-SQL, solo puede hacerlo utilizando identificadores delimitados.
Disponible en https://docs.microsoft.com/en-us/sql/t-sql/language -elementos / palabras-reservadas-transacciones-sql? view = sql-server-2017 Vea la lista de palabras reservadas en la base de datos SQLServer, como se muestra en la siguiente figura:
Imagen 1
Imagen 2
En la figura 2 anterior, puede ver que USUARIO es una palabra reservada en la base de datos SQLServer , Los usuarios no pueden usarlo como indicador.

Modifique el nombre de la tabla user a t_user en la base de datos de SQLServer UserDB, y luego modifique el nombre de la tabla en consecuencia en el código mssqlTest.js

El código mssqlTest.js modificado es el siguiente:

// mssql模块的简单使用
// https://www.npmjs.com/package/mssql
var sql = require('mssql');

// DB configuration
var dbConfig = {
  user: 'sa',
  password: '1030',
  server: 'localhost',
  database: 'UserDB',
  port: 1433,
  pool: {
      max: 10,
      min: 0,
      idleTimeoutMillis: 30000
  }
};

// 查询所有的用户信息
function getAllUsers() {
  var conn = new sql.ConnectionPool(dbConfig);
  //console.log(conn);
  var req = new sql.Request(conn);
  conn.connect(function (err) {
      if (err) {
          console.log(err);
          return;
      }
      // 查询t_user表
      req.query("SELECT * FROM t_user", function (err, recordset) {
          if (err) {
              console.log(err);
              return;
          }
          else {
              console.log(recordset);
          }
          conn.close();
      });
  });
  }
  
// 查询所有的用户信息
getAllUsers();

La captura de pantalla de ejecución en VSCode se muestra a continuación:
Resultado de la operación

Referencias

131 artículos originales publicados · Me gusta 38 · Visita 990,000+

Supongo que te gusta

Origin blog.csdn.net/ccf19881030/article/details/104688626
Recomendado
Clasificación