咨询:JavaScript Web应用连接MSSQL数据库的可行方案
可行方案推荐
方案一:使用IE浏览器+ActiveXObject(快速复现)
IE11及更早版本确实仍支持ActiveXObject,但需要手动开启浏览器权限:
- 打开IE的「Internet选项」→「安全」→「自定义级别」
- 找到「ActiveX控件和插件」相关选项,启用「对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本」等权限
- 用类似原有系统的逻辑直接连接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
相关产品推荐
相关产品推荐

