You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:JavaScript Web应用连接MSSQL数据库的可行方案

可行方案推荐

方案一:使用IE浏览器+ActiveXObject(快速复现)

IE11及更早版本确实仍支持ActiveXObject,但需要手动开启浏览器权限:

  1. 打开IE的「Internet选项」→「安全」→「自定义级别」
  2. 找到「ActiveX控件和插件」相关选项,启用「对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本」等权限
  3. 用类似原有系统的逻辑直接连接MSSQL:
const conn = new ActiveXObject("ADODB.Connection");
conn.Open("Provider=SQLOLEDB;Data Source=数据库地址;Initial Catalog=库名;User ID=用户名;Password=密码");
// 查询客户数据
const rs = conn.Execute("SELECT * FROM 客户表 WHERE id = 'xxx'");
if (!rs.EOF) {
  // 填充页面字段
  document.getElementById('customerName').value = rs.Fields("Name").Value;
}
rs.Close();
conn.Close();

这个方案适合快速复现原有系统逻辑,不需要额外搭建后端。

方案二:极简后端代理(不依赖IE,通用浏览器支持)

浏览器无法直接连接MSSQL(Node.js模块依赖Node专属API,浏览器环境不具备),所以必须通过后端中转。因为是内网4人使用,后端可以做得非常简单:

步骤1:搭建Node.js后端

用Express+mssql快速写接口:

const express = require('express');
const sql = require('mssql');
const app = express();
app.use(express.json());

// MSSQL连接配置
const dbConfig = {
  user: '你的数据库账号',
  password: '你的数据库密码',
  server: '数据库服务器IP/域名',
  database: '目标数据库名',
  options: { trustServerCertificate: true } // 内网环境可开启
};

// 接口1:根据客户ID获取数据
app.get('/get-customer/:id', async (req, res) => {
  try {
    await sql.connect(dbConfig);
    const result = await sql.query`SELECT * FROM 客户表 WHERE id = ${req.params.id}`;
    res.send(result.recordset[0] || {});
  } catch (err) {
    res.status(500).send(err.message);
  }
});

// 接口2:提交数据插入新记录
app.post('/submit-data', async (req, res) => {
  try {
    await sql.connect(dbConfig);
    const { customerId, field1, field2 } = req.body;
    const result = await sql.query`
      INSERT INTO 请求记录表 (customer_id, field1, field2)
      VALUES (${customerId}, ${field1}, ${field2})
    `;
    res.send({ success: true, rows: result.rowsAffected[0] });
  } catch (err) {
    res.status(500).send(err.message);
  }
});

app.listen(3000, () => console.log('后端服务运行在http://localhost:3000'));

步骤2:前端调用接口

用原生fetch即可,无需额外库:

// 加载客户数据
async function loadCustomerData(customerId) {
  const res = await fetch(`/get-customer/${customerId}`);
  const data = await res.json();
  // 填充页面字段
  document.getElementById('field1').value = data.field1;
  document.getElementById('field2').value = data.field2;
}

// 提交表单
async function submitForm() {
  const formData = {
    customerId: document.getElementById('customerSelect').value,
    field1: document.getElementById('field1').value,
    field2: document.getElementById('field2').value
  };
  const res = await fetch('/submit-data', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(formData)
  });
  const result = await res.json();
  alert(result.success ? '提交成功' : '提交失败:' + result.message);
}

关于你的尝试补充

  • requirejs无法加载mssql模块:因为mssql是Node.js专属模块,依赖Node的网络、文件系统等API,浏览器环境没有这些底层支持,所以这条路完全走不通,不用再尝试。

内容的提问来源于stack exchange,提问作者babno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:07:45