(一)Node 运用mysql实现首次数据连接成功

273 阅读3分钟

想学习的node却感觉老是没时间,但是学习起来到会自己写接口使用这个过程还是挺有趣的,想会自己写接口使用我们还要掌握个mongodb,但是这些都是需要我们能够首次在数据库中实现首次的数据连接成功,写入数据到数据库中必不可少的环节之一。

此次这个会呈现的干货有创建表,表的字段名称,数据的插入(包括多数据字段的插入),查询表,进行封装的使用Promise和async的调用,然后你会发现还要写SQL语法和一个query撑起了查询插入查询等功能。

### Node的api了解

fs , Buffer  , http ,stream

### Node 连接准备

mysql安装 www.mysql.com/

参考 blog.csdn.net/zhiyeegao/a…

### Node 环境配置

连接mysql执行node,安装执行命令 `npm i mysql`

运行node  `nodemon + 路径`

### 代码展示

const mysql = require('mysql') //需要进行引入操作

const cfg = { //创建连接
    host: 'localhost', 
    user: 'root',
    password: '123456',
    database: 'test235' //创建的数据库名称
}
//创建连接对象
const conn = mysql.createConnection(cfg);
conn.connect(err => {
    if(err) { //判断是否成功
        throw err
    }
    console.log('连接成功'); 
})


当控制台输出连接成功后,我们已经成功一半了,在这个过程会出现,数据库mysql没安装,要么就是拒绝访问数据库,数据库密码错误等情况,可重装百度等解决问题。如果真的解决不了的话可以下载Navicat for MySQL使用

通过以上的当我们数据连接成功后,我们来实现一个demo,这个demo包含有数据库的连接,创建表,表的字段名称,数据的插入(包括多数据字段的插入),查询表,进行封装的使用Promise和async的调用

const mysql = require('mysql')

const cfg = { //数据库连接的信息
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: 'test' //数据库名称
}
//全局命令安装 npm i mysql
//运行 nodemon 1209mysql.js
//封装 这样可以用query方法调用async
function query(conn,sql,param=null) { //param可能的参数
    return new Promise((resolve,reject) => {
        conn.query(sql,param,(err,results)=>{
            if(err) {
                reject(err) //失败
            } else {
                resolve(results) //成功
            }
        })
    })
}

//创建连接对象
const conn = mysql.createConnection(cfg);

const CREATE_SQL = `CREATE TABLE IF NOT EXISTS test2( 
    id INT NOT NULL AUTO_INCREMENT,  
    message VARCHAR(45) NULL, 
    name VARCHAR(45) NULL, 
    PRIMARY KEY (id))`; //创建一张表,名叫test2,主键id,消息message
    const INSERT_SQL = `INSERT INTO test2(message,name) VALUES(? ) `; //?占位符传参数使用,往表里头插入数据
    const SELECT_SQL = `SELECT * FROM test2`; //查询语句    
//连接数据库
conn.connect(err => {
    if(err) { //判断是否成功
        throw err
    }
    console.log('连接成功'); 
    //创建表
    conn.query(CREATE_SQL,(err)=>{    
            //压缩后的情况
        //1. conn.query(INSERT_SQL,'hello',(err,result)=>{            //展开后的情况
        //2. const sql = mysql.format(INSERT_SQL,'hello')
        // console.log(sql);
        // conn.query(sql,(err,result)=>{
        //     console.log(result)
        // })

        // 插入数据
        conn.query(INSERT_SQL,[['hellow','小明']],(err,result)=>{//插入消息的内容是什么
            console.log(result); 
            //查询
            conn.query(SELECT_SQL,(err,result) =>{
                console.log(result);
                conn.end() //不使用连接词需要关闭
            })
        })
    })

// //封装后使用的
    query(conn,SELECT_SQL)
    .then(results=>console.log(results))
    .catch(err=>console.log(err))
})

             

             

相关资料文档github.com/mysqljs/mys…【重点看 连接池pooling-connections ,Preparing Queries】

资料文档中有一块是双问号,代表是关键字代入的意思,保护不会被攻击,表查询