zoukankan      html  css  js  c++  java
  • 使用Nodejs 连接数据库实现增删改查功能库

    完成代码可去github查看下载,有更多功能

    最近开始接触Nodejs, 前人已经有很多成熟的案例,自己写下来备忘的同时希望能帮助那些刚开始的同学。

    准备工作:安装mysql 包,不清楚的话可以查npm的使用方法,windows 的同学可能是用cnpm更好些,打开terminal 或者 cmd(windows)进入你的项目目录,执行如下命令

    npm install mysql

    下面是查询数据库的类,sql 在外部传入,通过回调把结果返回。可以在其他地方初始化实例或者继承此类从而达到连接的目的
    'use strict'
    var mysql = require('mysql');

    function DB() {
    if (this instanceof DB) {
    this.connect();
    } else {
    throw {
    error_msg: 'Please create the constructor of DB like this: "var _db = new DB();"'
    }
    }
    }
    DB.prototype.connect = function() {
    this.DATABASE = 'philip';
    this.client = mysql.createConnection({
    user: 'root',
    password: '123456',
    });

    this.client.connect();
    this.client.query("use " + this.DATABASE);
    }
    DB.prototype.doSelect = function(sql, callback) {
    var self = this;
    self.client.query(
    sql,
    function selectCb(err, results) {
    if (err) {
    throw err;
    }
    if(results && typeof callback ==='function')
    {
    callback(results);
    }
    self.client.end();
    }
    );
    }
    DB.prototype.doInsert = function(sql, params, callback) {
    var self = this;
    self.client.query(
    sql,
    params,
    function (err, results) {
    if(err){
    throw err;
    }
    if(results && typeof callback ==='function')
    {
    callback(results);
    }
    self.client.end();
    }
    );
    }
    DB.prototype.doUpdate = function(sql, params, callback) {
    var self = this;
    self.client.query(
    sql,
    params,
    function (err, results) {
    if(err){
    throw err;
    }
    if(results && typeof callback ==='function')
    {
    callback(results);
    }
    self.client.end();
    }
    );
    }
    DB.prototype.doDelete = function(sql, callback) {
    var self = this;
    self.client.query(
    sql,
    function (err, results) {
    if(err){
    throw err;
    }
    if(results && typeof callback ==='function')
    {
    callback(results);
    }
    self.client.end();
    }
    );
    }

    当你想在其他地方使用时,可以像如下方式使用 DB 类
    // you can use it anywhere
    var selectUserInfo = function() {
    try{
    var _db = new DB();
    // test the error message
    // DB();
    var strSql = 'SELECT name, email, phone FROM user ';
    _db.doSelect(
    strSql,
    function(results) {
    for(var i = 0; i < results.length; i++){
    console.log("%s %s %d", results[i].name, results[i].email, results[i].phone);
    };
    }
    );
    _db = null;
    } catch(err) {
    console.log(err.error_msg);
    }
    }
    selectUserInfo();

    var insertUser = function() {
    try{
    var _db = new DB();
    var strSql = 'INSERT INTO user ' +
    '(account, password, name, email, phone) VALUES(?,?,?,?,?)';
    var params = ['km', '123', 'km', 'km@126.com', 123456];
    _db.doInsert(
    strSql,
    params,
    function(results) {
    console.info(results);
    }
    );
    _db = null;
    } catch(err) {
    console.log(err.error_msg);
    }
    }
    insertUser();

    var updateUser = function() {
    try{
    var _db = new DB();
    var strSql = 'UPDATE user SET name = ?, email = ? WHERE ID = ?';
    var params = ['Eric', 'Eric@126.com', 4];
    _db.doUpdate(
    strSql,
    params,
    function(results) {
    console.info(results);
    }
    );
    _db = null;
    } catch(err) {
    console.log(err.error_msg);
    }
    }
    updateUser();

    var deleteUser = function() {
    try{
    var _db = new DB();
    var strSql = 'DELETE FROM user WHERE ID = 4';
    _db.doDelete(
    strSql,
    function(results) {
    console.info(results);
    }
    );
    _db = null;
    } catch(err) {
    console.log(err.error_msg);
    }
    }
    deleteUser();

    以上就是数据库的基本操作了。

  • 相关阅读:
    Hexo命令无法找到 -问题修复
    技术的本质
    java 多线程总结篇4——锁机制
    java 多线程总结篇3之——生命周期和线程同步
    java 多线程总结篇2之——Thread类及常用函数
    java 多线程总结篇1之——基本概念
    java IO流的继承体系和装饰类应用
    java IO流知识点总结
    java IO流之——File类知识总结和面试
    为什么需要学UML建模
  • 原文地址:https://www.cnblogs.com/onesea/p/15033707.html
Copyright © 2011-2022 走看看