当前位置:首页 > 问答 > 正文

快速上手用 mssql.js 管理 SQL Server 数据库,省时又方便,适合想快点搞定的你

你得有个项目环境,假设你已经用 npm init 创建了一个 Node.js 项目(如果还没,就在你的项目文件夹里打开命令行,输入 npm init -y 快速生成一个),最关键的一步就是安装 mssql 这个包,在命令行里运行:

npm install mssql

这样,我们就有了武器,mssql.js 这个库让我们能用 JavaScript 的方式和 SQL Server 数据库对话。

第一步:连接数据库

干活之前,先得连上数据库,连接需要一些基本信息,就像你要去别人家做客得知道地址一样,你需要准备这些:服务器地址、数据库名、用户名和密码,千万不要把这些信息直接写死在代码里,尤其是密码!最好用环境变量来管理,这里为了演示方便,我们先写在一个对象里。

const sql = require('mssql');
// 配置连接信息,把这些换成你自己的
const dbConfig = {
    server: 'localhost', // 你的服务器地址,如果是本机就用这个
    database: 'YourDatabaseName', // 你想连接的数据库名字
    user: 'your_username', // 登录用户名
    password: 'your_password', // 登录密码
    options: {
        encrypt: false, // 如果本地连接,通常设为 false
        trustServerCertificate: true // 本地开发需要这个
    }
};

连接信息准备好了,接下来我们写一个函数来真正建立连接。

async function connectToDatabase() {
    try {
        // 建立连接池(可以理解为一个高效的管理连接的管家)
        await sql.connect(dbConfig);
        console.log('恭喜!已经成功连接到数据库!');
    } catch (err) {
        console.error('糟了,连接数据库出错了:', err);
    }
}
// 调用这个函数
connectToDatabase();

运行一下这段代码,如果看到“恭喜!”的消息,说明你的大门已经打开了。

第二步:执行查询 - 读取数据

连上数据库之后,最常见的操作就是查询数据了,我们用 sql.query() 方法。

我们想从一个叫 Users 的用户表里把所有用户的名字和邮箱查出来。

async function getUsers() {
    try {
        // 执行一条简单的 SQL 查询语句
        const result = await sql.query`SELECT Name, Email FROM Users`;
        // 查询结果就在 result.recordset 里,它是一个数组,每个元素就是一行数据
        console.log('查询结果:', result.recordset);
        // 你可以像操作普通数组一样操作它
        result.recordset.forEach(user => {
            console.log(`用户:${user.Name}, 邮箱:${user.Email}`);
        });
    } catch (err) {
        console.error('查询出错了:', err);
    }
}
// 记得在连接成功后再调用这个函数,或者放在 connectToDatabase 的 then 里面
getUsers();

第三步:执行操作 - 插入、更新、删除数据

除了查,我们还得增删改,这时候我们用 sql.query() 同样可以,但为了安全,强烈建议使用“参数化查询”,这样可以有效防止SQL注入攻击(一种常见的黑客手段)。

插入数据示例:

async function addUser(userName, userEmail) {
    try {
        // 使用参数化查询,注意这里的语法:INSERT INTO ... VALUES (@参数1, @参数2)
        const request = new sql.Request();
        request.input('Name', sql.NVarChar, userName); // 告诉数据库,@Name 参数的值是 userName,类型是字符串
        request.input('Email', sql.NVarChar, userEmail);
        const result = await request.query(`INSERT INTO Users (Name, Email) VALUES (@Name, @Email)`);
        // 插入成功后,result.rowsAffected 表示受影响的行数,如果是1,就代表插入了一行
        console.log(`成功插入了 ${result.rowsAffected} 条记录`);
    } catch (err) {
        console.error('插入数据出错了:', err);
    }
}
// 调用函数,添加一个用户
addUser('张三', 'zhangsan@example.com');

更新和删除的操作几乎一模一样,只是 SQL 语句换一下,比如更新:

async function updateUserEmail(userId, newEmail) {
    try {
        const request = new sql.Request();
        request.input('UserId', sql.Int, userId);
        request.input('NewEmail', sql.NVarChar, newEmail);
        const result = await request.query(`UPDATE Users SET Email = @NewEmail WHERE Id = @UserId`);
        console.log(`成功更新了 ${result.rowsAffected} 条记录`);
    } catch (err) {
        console.error('更新数据出错了:', err);
    }
}

第四步:关闭连接

所有操作都做完了,最好优雅地关闭连接,释放资源,虽然连接池通常会自动管理,但显式关闭是个好习惯。

async function closeConnection() {
    try {
        await sql.close();
        console.log('数据库连接已关闭。');
    } catch (err) {
        console.error('关闭连接时出错了:', err);
    }
}
// 在你程序退出或不再需要数据库的时候调用它
// closeConnection();

把它们组合起来

一个完整的流程看起来是这样的:

const sql = require('mssql');
const dbConfig = { ... }; // 你的配置
async function main() {
    try {
        // 1. 连接
        await sql.connect(dbConfig);
        console.log('连接成功');
        // 2. 查询
        const users = await sql.query`SELECT * FROM Users`;
        console.log(users.recordset);
        // 3. 插入
        const request = new sql.Request();
        request.input('Name', sql.NVarChar, '李四');
        request.input('Email', sql.NVarChar, 'lisi@example.com');
        await request.query(`INSERT INTO Users (Name, Email) VALUES (@Name, @Email)`);
        console.log('插入成功');
        // ... 其他操作
    } catch (err) {
        console.error('出错了:', err);
    } finally {
        // 4. 关闭连接(finally块保证无论是否出错都会执行)
        await sql.close();
    }
}
// 启动整个程序
main();

好了,以上就是用 mssql.js 操作 SQL Server 最核心、最常用的几个步骤,总结一下就是四步曲:安装包 -> 配置连接 -> 写异步函数执行SQL -> 关闭连接,多写几次就熟练了,遇到问题别慌,多看错误信息,大部分时候都是打错字或者连接配置不对,希望这些内容能帮你快点搞定!

快速上手用 mssql.js 管理 SQL Server 数据库,省时又方便,适合想快点搞定的你