01、连接数据库的步骤

1.对项目初始化。npm init -y;

2.npm安装MySQL的驱动 cnpm i mysql --save;

3.引入mysql模块。

4.连接配置。调用createConnection方法,这个方法需要一个对象,对象的属性为连接数据库的配置信息。

5.建立连接。

6.创建sql语句(查询select:会将查询的记录封装成一个对象)添加,插入inset、修改updata、删除delete:成功后返回

7.执行sql语句

结束连接。不能一直开启,会消耗资源(程序/数据库的内存,连接数等等)。

第六步:
OkPacket {
  fieldCount: 0, 
  affectedRows: 1,   //1, 受影响的行数  insert update delete都会返回   可以用这个字段判断新增,修改,删除是否执行成功。
  insertId: 0,   //如果表的主键是自增的,那么insert语句会返回插入记录的id值。
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0   //被改变的行数  只有是updata时才会不为0
  }


如果是select , 会将查询的记录封装成一个对象,对象的属性是字段的名字,值就是当前记录的值。把对象放在一个数组中,返回。
[
  {
    SId: '01',
    Sname: '赵雷',
    Sage: 1989-12-31T16:00:00.000Z,
    Ssex: '男'
  },
  {
    SId: '02',
    Sname: '钱电',
    Sage: 1990-12-20T16:00:00.000Z,
    Ssex: '男'
  }
]
const mysql = require("mysql");
const conn = mysql.createConnection({       //4.连接配置  调用createConnection方法,这个方法需要一个对象。对象的属性为连接数据库的配置信息。
  host:"localhost",                                     //主机名(服务器地址)
  user:"root",                                          //用户名
  password:"123456",                           //密码
  database:"h_test"                             //数据库名字
});
conn.connect();                      //5.建立连接
let sql = "delete from demo where id = 3";         //6.创建sql语句
conn.query(sql,(err,result)=>{                   //7.执行sql语句
  if (err) {
    console.log(err);
    return;
  }
  if (result.affectedRows!=0) {         //判断delete语句是否执行成功
    console.log("删除成功!");
  }else{
    console.log("删除失败!");
  }
})
conn.end();           //8.结束连接  不能一直开启,会消耗资源(程序/数据库的内存,连接数等等)

02、查询成绩的案例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <form action="http://localhost:3000/queryScore" method="get">
    <p>学号:<input type="text" name="sid"></p>
    <p>
      课程:&nbsp;&nbsp;
        <select name="cid">
          <option value="01">语文</option>
          <option value="02">数学</option>
          <option value="03">英语</option>
        </select>
    </p>
    <button type="submit">查询</button>
  </form>
</body>
</html>
const http = require("http");
const queryString = require("querystring");
const mysql = require("mysql");

http.createServer((req, res) => {
  if (req.url.startsWith("/queryScore")) {
    // 获取get参数
    let params = queryString.parse(req.url.split("?")[1]);
    //连接配置
    const conn = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: "123456",
      database: "csy"
    })
    //建立连接
    conn.connect();
    //书写sql语句
    let sql = `SELECT score FROM sc WHERE SId = '${params.sid}' AND CId = '${params.cid}';`;
    console.log(sql);
    //执行sql语句
    conn.query(sql, (err, result) => {   //result 返回的是一个数组
      if (err) {
        console.log(err);
        return;
      }
      res.end(JSON.stringify(result[0].score));  //转成字符串
    })
    // 关闭连接
    conn.end();
    return;    
  }
  res.end();
}).listen(3000, () => {
  console.log("服务器成功启动");
});

03、封装mysql连接

index.js如下:

const http = require("http");
const queryString = require("querystring");
const db = require("./db");

http.createServer((req, res) => {
  if (req.url.startsWith("/queryScore")) {
    // 获取get参数
    let params = queryString.parse(req.url.split("?")[1]);
    //书写sql语句
    let sql = `SELECT score FROM sc WHERE SId = '${params.sid}' AND CId = '${params.cid}';`;
    // query是一个异步函数,对结果的处理不能直接写在下面。因为异步函数的结果还没有获取到。
    db.query(sql,(err,result)=>{
      if (err) {
        res.end("查询失败,错误信息为:"+err);
      }
      res.end(JSON.stringify(result));
    });
  }else{
    res.end();
  }
}).listen(3000, () => {
  console.log("服务器成功启动");
});

db.js如下:

let db = {};
//引入mysql模块
const mysql = require("mysql");
//连接配置
const conn = mysql.createConnection({
  host:"localhost",
  user:"root",
  password:"123456",
  database:"h_test"
})
//建立连接
conn.connect();
//准备sql语句
db.query = function(sql,callback){
  conn.query(sql,(err,result)=>{
    if (err) {
      // 第一个参数是错误信息,第二个参数是执行结果。
      callback(err,null)
      return;
    }
    // 对result执行操作
    callback(null,result);
    return;
  })
  //关闭连接
  // conn.end();
}

module.exports = db;

04、Promise封装mysql

index.js如下:

const http = require("http");
const queryString = require("querystring");
const db = require("./db");

http.createServer((req, res) => {
  if (req.url.startsWith("/queryScore")) {
    // 获取get参数
    let params = queryString.parse(req.url.split("?")[1]);
    //书写sql语句
    let sql = `SELECT score FROM sc WHERE SId = '${params.sid}' AND CId = '${params.cid}';`;
    
    db.query(sql)
    .then(function(result){
      res.end(JSON.stringify(result));
    })
    .catch(function(err){
      res.end("查询失败,错误信息为:"+err);
    });
  }else{
    res.end();
  }
}).listen(3000, () => {
  console.log("服务器成功启动");
});

db.js如下:

let db = {};
//引入mysql模块
const mysql = require("mysql");
//连接配置
const conn = mysql.createConnection({
  host:"localhost",
  user:"root",
  password:"123456",
  database:"h_test"
})
//建立连接
conn.connect();
//准备sql语句
db.query = function(sql){
  return new Promise((resolve,reject)=>{
    conn.query(sql,(err,result)=>{
      if (err) {
        reject(err);
      }else{
        resolve(result);
      }
    })
    // conn.end();
  })
}

module.exports = db;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐