关于MSSQL模块在Nodejs中的问题

关于MSSQL模块在Nodejs中的问题

现在功能需要使用nodejs连接到MSSQL里面,但是我发现装不起来了node-sqlserver 模块,但是安装有错误,现在就是按照教程将node-gyp安装成功了,python2.7.6也安装了,开发工具是VS2012 + MSSQL2008,进行npm install node-sqlserver时出现: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale(323): wa rning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\z hangyang\node_modules \node-sqlserver\build\sqlserver.vcxproj] C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale(323): wa rning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\z hangyang\node_modules \node-sqlserver\build\sqlserver.vcxproj] C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale(323): wa rning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\z hangyang\node_modules \node-sqlserver\build\sqlserver.vcxproj] C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale(323): wa rning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [C:\Users\z hangyang\node_modules \node-sqlserver\build\sqlserver.vcxproj] … 如上错误,难道我还有什么东西没装吗?


2 回复

针对你在安装 node-sqlserver 模块时遇到的警告和问题,我们可以从几个方面来解决这个问题。首先,你需要确保你的环境配置正确,并且已经安装了所有必要的依赖项。以下是一个详细的步骤指南:

1. 确保环境变量配置正确

确保你的系统环境变量中包含了正确的路径,特别是Python、Visual Studio的路径等。

# 设置环境变量
set PATH=%PATH%;C:\Python27;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin

2. 安装必要的依赖项

确保你已经安装了 node-gyp 和 Python 2.7.x(例如2.7.6)。

npm install -g node-gyp

3. 配置 Node-gyp

确保 node-gyp 使用正确的编译器。你可以通过设置环境变量来指定。

# 在命令行中设置
set GYP_MSVS_VERSION=2012

4. 解决警告问题

针对你提到的 C4530 警告,你需要确保编译时启用了 /EHsc 选项。可以通过修改 binding.gyp 文件来实现这一点。

编辑 node_modules/node-sqlserver/binding.gyp 文件,添加或修改 cflags 参数:

{
  "targets": [
    {
      "target_name": "sqlserver",
      "sources": [ "sqlserver.cc" ],
      "msvs_settings": {
        "VCCLCompilerTool": {
          "ExceptionHandling": 1,
          "AdditionalOptions": [ "/EHsc" ]
        }
      }
    }
  ]
}

5. 安装 node-sqlserver 模块

再次尝试安装 node-sqlserver 模块:

npm install node-sqlserver

如果一切配置正确,你应该不会再看到 C4530 警告。

6. 使用替代方案

如果上述方法仍然无法解决问题,你可以考虑使用更现代的MSSQL驱动库,例如 mssqltedious

npm install mssql

然后你可以使用以下示例代码来测试连接:

const sql = require('mssql');

// 配置数据库连接
const config = {
    user: 'your_username',
    password: 'your_password',
    server: 'localhost', // 也可以是一个 IP 地址
    database: 'your_database'
};

async function runQuery() {
    try {
        let pool = await sql.connect(config);
        let result = await pool.request().query('SELECT * FROM your_table');
        console.log(result.recordset);
    } catch (err) {
        console.error(err);
    }
}

runQuery();

通过以上步骤,你应该能够解决 node-sqlserver 模块安装过程中遇到的问题,并能够顺利连接到MSSQL数据库。


对于使用 node-sqlserver 连接 MSSQL 的问题,建议尝试使用更现代的库,比如 mssqltedious,因为 node-sqlserver 已经不再维护,可能会遇到兼容性问题。

使用 mssql 库的示例

首先安装 mssql 库:

npm install mssql

然后可以使用以下代码来连接和查询数据库:

const sql = require('mssql');

// 配置数据库参数
const config = {
    server: 'your_server.database.windows.net',
    database: 'your_database',
    user: 'your_username',
    password: 'your_password',
    options: {
        encrypt: true // 如果连接的是 Azure SQL 数据库,则需要开启加密
    }
};

async function run() {
    try {
        // 创建连接池
        let pool = await new sql.ConnectionPool(config).connect();
        console.log('Connected to the database!');

        // 执行查询
        const result = await pool.request()
            .query('SELECT * FROM your_table');
        
        console.log(result.recordset);
    } catch (err) {
        console.error('Database connection or query error:', err);
    }
}

run();

解释

  1. 安装库:通过 npm install mssql 安装 mssql 库。
  2. 配置数据库连接:设置服务器、数据库名、用户名和密码等参数。
  3. 创建连接池:使用 sql.ConnectionPool(config).connect() 创建一个连接池,并等待连接完成。
  4. 执行查询:使用 .request().query() 方法执行 SQL 查询,并打印结果。

这种方法避免了使用旧版库可能带来的兼容性和维护问题。如果仍然希望继续使用 node-sqlserver,可以尝试修改项目中的 MSVC 编译器选项,指定 /EHsc,但这并不推荐,因为该库已不再维护。

回到顶部