📅  最后修改于: 2023-12-03 15:09:19.400000             🧑  作者: Mango
如果你正在建立一个应用程序,需要使用 SQL Server 数据库,并且想要使用 TypeScript 来开发,那么你来对地方了!在本指南中,我们将深入探讨如何在 TypeScript 中使用 SQL Server。
在开始编码之前,我们需要将必要的依赖项安装到我们的项目中。
npm install --save mssql
npm install --save-dev @types/mssql typescript
这将安装 mssql
模块和 TypeScript 模块,以便在代码中进行类型检查。
我们可以使用以下 TypeScript 代码连接到 SQL Server 数据库:
import * as sql from "mssql";
const config: sql.config = {
server: "localhost",
database: "mydb",
user: "myuser",
password: "mypassword",
port: 1433,
options: {
encrypt: true,
},
};
async function executeQuery(query: string) {
try {
await sql.connect(config);
const result = await sql.query(query);
return result.recordset;
} catch (err) {
console.error(err);
}
}
executeQuery("SELECT * FROM MyTable").then((result) => console.log(result));
这段代码使用 mssql
模块建立一个连接,并执行 SQL 查询。我们首先定义连接配置,然后使用 sql.connect()
函数建立连接。一旦连接成功,我们使用 sql.query()
函数来执行查询,并返回结果集。最后,我们断开连接,并返回结果集。
我们可以将 SQL Server 的结果集存储在 TypeScript 对象中,以便在我们的应用程序中使用。
interface MyRow {
id: number;
name: string;
}
async function getMyRows(): Promise<MyRow[]> {
const queryResult = await executeQuery("SELECT * FROM MyTable");
const myRows: MyRow[] = queryResult.map((row) => ({
id: row.id,
name: row.name,
}));
return myRows;
}
getMyRows().then((rows) => console.log(rows));
这里,我们定义了一个 MyRow
接口来表示结果集中的行。我们编写了一个函数 getMyRows()
来执行 SQL 查询,并将结果转换为 TypeScript 对象数组。
最后,我们强烈建议使用参数化查询来避免 SQL 注入攻击。
async function getMyRowById(id: number): Promise<MyRow | undefined> {
const queryResult = await sql.query`SELECT * FROM MyTable WHERE id = ${id}`;
const myRow = queryResult.recordset[0];
return myRow
? {
id: myRow.id,
name: myRow.name,
}
: undefined;
}
getMyRowById(1).then((row) => console.log(row));
这里,我们使用 sql.query
函数来执行参数化查询。我们在查询字符串中使用 ${}
,SQL Server 将自动将它们绑定到参数。这可以有效地防止 SQL 注入攻击,并提高应用程序的安全性。
在本指南中,我们介绍了如何在 TypeScript 中使用 SQL Server。我们涵盖了连接到数据库、处理结果集和使用参数化查询。希望这个指南能够帮助你快速上手。