封装nodejs连接mysql数据库的方法
完整代码在最后
1.创建数据库
1.1创建一个数据库
create database my_database;
1.2选择数据库
use my_database;
1.3创建数据表
create table student(id int,name char(10));
1.4插入数据项
insert into student(id,name,age,sex,high) value (001,"张三",10,"男",160);
2.初始化文件
2.1用Visual Studio Code 导航到创建的新文件,使用一下命令创建一个package.json 文件
npm init -y
2.2然后,使用一下安装mysql 模块
npm install mysql
3.创建一个dbconfig.js 文件
3.1导入mysql模块
const mysql = require("mysql")
3.2创建连接池,根据情况填写host等信息
const pool = mysql.createPool({
host: "localhost",
user: "root",
password: "密码",
database: "my_database",
});
使用mysql.createConnection()
方法创建了一个数据库连接对象,并指定了连接所需的参数,包括:
host
: 数据库服务器地址,这里是本地地址localhost
user
: 用于连接数据库的用户名password
: 用户的密码database
: 要连接的数据库名
3.3封装 sqlConnect
方法
module.exports = {
//封装了sqlConnect方法,并通过module.exports导出
sqlConnect: function (sql, params) {
//定义了一个名为sqlConnect的方法,它接受两个参数:sql(代表SQL语句)和params(代表SQL语句中所需的参数数组
return new Promise((resolve, reject) => {
//sqlConnect方法返回一个Promise对象。Promise是JavaScript中用于处理异步操作的对象,它提供了resolve和reject两个方法,分别表示异步操作成功和失败时的回调函数。
pool.getConnection((err, connection) => {
//试从pool(数据库连接池)中获取一个连接。当连接成功或失败时,会执行提供的回调函数,并传入err(如果有错误的话)和connection(连接对象)。
if (err) {
console.log("err", "连接失败");
reject(err);
return;
//如果在获取连接时发生错误,代码将输出错误消息到控制台,并通过Promise的reject方法将错误返回给调用者。然后,通过return语句退出当前回调函数。
}
connection.query(sql, params, (err, results) => {
if (err) {
console.log("err", "查询失败");
reject(err);
return;
}
resolve(results);
//如果SQL查询成功执行,代码将调用Promise的resolve方法,并将查询结果results作为参数传入。这意味着Promise的then方法将能够接收到这些结果。
connection.release();
//在成功处理完查询后,代码释放了与数据库的连接,使其可以返回到连接池中供其他查询使用
});
});
});
},
};
4.创建 index.js 文件
4.1使用了Node.js的require
方法,用于导入一个名为dbconfig
的模块,该模块位于./utils/
目录下。
const dbconfig = require("./utils/dbconfig");
4.2定义了一个常量sql
,它包含了一个SQL查询语句,该语句从user
表中选取所有列的所有行。
const sql = "select * from user";
4.3调用dbconfig
模块中的sqlConnect
方法
dbconfig.sqlConnect(sql, [])
.then((res) => {
console.log("res", res);
})
.catch((err) => {
console.error("Error executing SQL:", err);
});
- 调用
dbconfig
模块中的sqlConnect
方法,并传入之前定义的SQL查询语句sql
和一个空数组(这个数组可能是用于传递查询参数的,但在此例中它是空的)。 sqlConnect
方法应该返回一个Promise对象,该对象在成功执行SQL查询时解析(resolve)为查询结果,在出现错误时拒绝(reject)并抛出一个错误。- 使用
.then()
和.catch()
方法来处理Promise的解析和拒绝。如果查询成功,控制台将打印出查询结果;如果查询失败,控制台将打印出错误信息。
4.4最后在文件中打开终端输入
node index.js
4.5控制台输出你的数据库数据
{ id: 1, name: '张三' }
5 完整代码
5.1 dbconfig.js 完整代码
//导入mysql模块
const mysql = require("mysql");
//创建连接池 根据实际情况填写host等信息
const pool = mysql.createPool({
host: "localhost",
user: "root",
password: "密码",
database: "my",
});
//封装了sqlConnect方法,并通过module.exports导出
module.exports = {
sqlConnect: function (sql, params) {
//返回一个Promise对象
return new Promise((resolve, reject) => {
//pool.getConnection是否和数据库建立了连接
pool.getConnection((err, connection) => {
if (err) {
//连接失败将异常抛出
console.log("err", "连接失败");
reject(err);
return;
}
//连接成功执行connection.query方法,该方法是执行sql语句
//需要传入三个参数,第一个参数是sql语句,第二个参数sql语句中需要的值以数组的形式
//第三个参数是回调函数,如果执行sql语句成功,返回results,执行失败返回err
connection.query(sql, params, (err, results) => {
if (err) {
console.log("err", "查询失败");
reject(err);
return;
}
resolve(results);
//与数据库断开连接
connection.release();
});
});
});
},
};
5.2 index.js 完整代码
//引入该方法所在的js文件的路径
const dbconfig = require("./utils/dbconfig");
const sql = "select * from user";
dbconfig.sqlConnect(sql, [])
.then((res) => {
console.log("res", res);
})
.catch((err) => {
console.error("Error executing SQL:", err);
});