const express = require('express'); const app = express(); const sql = require('mssql'); // SQL Server 数据库配置 const config = { server: '192.168.10.223', user: 'sa', password: 'Servo01', database: 'demo', options: { encrypt: true // 如果需要 SSL 连接,设置为 true } }; app.post('/register', function(req, res) { const {name, email, password } = req.body; // 连接 SQL Server 数据库 sql.connect(config, function(err) { if (err) { console.log(err); res.status(500).send('数据库连接失败'); return; } // 执行插入操作 const query = 'INSERT INTO username (name, email, password) VALUES (@name, @email, @password)'; new sql.Request().query(query, function(err, result) { if (err) { console.log(err); res.status(500).send('注册失败'); return; } res.send('注册成功'); }); }); }); app.listen(port, function() { console.log(`Server running on port ${port}`); });这代码有啥问题吗,数据到不进数据库,我数据库中的username表有username表中有四个字段id,name,password,email。这是不对的原因吗,应该怎么写
时间: 2024-04-14 17:27:05 浏览: 17
根据你提供的代码,有几个问题可能导致数据无法写入数据库:
1. 首先,你在执行插入操作时,没有为参数化查询指定参数的值。你需要使用 `input` 方法为每个参数指定值。在你的代码中,你只是定义了参数名称,但没有为它们提供实际的值。你需要修改插入操作的代码如下:
```javascript
const request = new sql.Request();
request.input('name', sql.NVarChar, name);
request.input('email', sql.NVarChar, email);
request.input('password', sql.NVarChar, password);
request.query(query, function(err, result) {
// ...
});
```
2. 其次,你没有将请求体中的数据传递给 SQL 查询。在你的代码中,你只是从请求体中获取了 `name`、`email` 和 `password` 属性的值,但没有将这些值传递给 SQL 查询。你需要将这些值作为参数传递给查询,修改的代码如下:
```javascript
const query = `INSERT INTO username (name, email, password) VALUES (@name, @email, @password)`;
const request = new sql.Request();
request.input('name', sql.NVarChar, name);
request.input('email', sql.NVarChar, email);
request.input('password', sql.NVarChar, password);
request.query(query, function(err, result) {
// ...
});
```
3. 此外,你也需要在 `app.listen()` 函数中定义 `port` 变量,确保服务器监听的端口与你的应用程序配置一致。
请注意,在修改代码时,确保你已正确安装并引入了 `mssql` 模块,并且数据库连接配置(config)是正确的。
通过以上修改,你应该能够成功将数据插入到数据库中。如果问题仍然存在,请检查数据库连接配置、请求体中的数据和数据库表结构是否与代码匹配,并确保数据库服务器正常运行。