zoukankan      html  css  js  c++  java
  • node mysql

    var mysql = require('mysql');  
          
    var TEST_DATABASE = 'darwin';  
    var TEST_TABLE = 'data';  
      
    //创建连接  
    var client = mysql.createConnection({  
      user: 'root',  
      password: 'root',  
    });  
    
    client.connect();
    client.query("use " + TEST_DATABASE);
    
    client.query(  
      'SELECT * FROM '+TEST_TABLE,  
      function selectCb(err, results, fields) {  
        if (err) {  
          throw err;  
        }  
          
          if(results)
          {
              for(var i = 0; i < results.length; i++)
              {
                  console.log("%s		%s	%s", results[i].data_name, results[i].data_id, results[i].user_id);
              }
          }    
        client.end();  
      }  
    ); 
    

    官网:https://github.com/felixge/node-mysql

    教程:http://www.2cto.com/database/201505/402939.html

    查询有三种方式:直接,传值,联合

    转义查询值:connection.escape(userId)

    当使用自增主键时获取插入行id

    connection.query('INSERT INTO posts SET ?', {title: 'test'}, function(err, result) {
    	  if (err) throw err;
    
    	  console.log(result.insertId);
    	});
    

    插入时,可以使用insert into:insert into darwin.data values (列出所有的值,不传值列出列名),时间戳也需要加'', 

    有时会把内容存为blob,如何把blob转为字符串:.toString();

    SET SQL_SAFE_UPDATES = 0;

    看一下官网的教程

    链接的时候有个ssl选项

    结束链接:

    .end()
    .destory()
    

     链接有两种方式:

    直接链接;

    连接池:提高性能,减少内存占用。 这种比较好

    连接池的两种方式:

    实例化一个connection,用完之后release;

    直接query,它会自动release  这种比较好

    关闭连接池的链接

    第二种链接方式比较好,把参数单独写出来。

    防止sql注入,使用?替代值;用??替代操作符

    插入后返回的id:result.insertId

    受影响的行:result.affectedRows  delete

    改变的行:result.changedRows  update

    对每行进行单独处理:streaming query rows

    支持事务处理:一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果在事务的任何操作失败,则整个事务将失败。

    应用场景:添加菜单的内容

    1、需要添加菜单和用户

    2、1成功后,需要添加菜单和菜,如果失败的话,1也rollback

    MySQL默认操作模式就是autocommit自动提交模式。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。如果显式开始一个事务,则不会自动autocommit?

    pool and transaction 比较麻烦,我已写好一个例子,以后参考。

    注意:需要引入新的文件   var Connection = require('mysql/lib/Connection.js');

    从数据库中读取出来的datetime是new Date()的格式, 如果保留数据库中的格式,设置dateStrings:true

     总结的不错:http://blog.csdn.net/zxsrendong/article/details/17006185 nodejs中mysql用法

    表名不能用call。

    mysql中的关键字,保留字:http://www.cnblogs.com/lawdong/archive/2010/08/08/2357903.html

    之前使用node-mysql 来在nodejs中操作mysql,有点复杂,现在使用bookshelf.js 这个orm库来操作

    教程:https://www.sitepoint.com/getting-started-bookshelf-js/

             http://bookshelfjs.org/

    orm也没有看过规范的解释,只是感觉像hibernate那样,便于数据库的操作。

    mac mysql 导入数据:左侧有个data import

    mac mysql 导出数据:左侧有个data export,点击refresh可以看到 需要导出的数据库

    碰到一个问题,有的mysql版本会出现

    使用group by时,group by的字段要比select的字段多

  • 相关阅读:
    <2016-1-28>
    <页面里折合与打开>
    右上角鼠标滑过展开收缩动画效果js代码的演示页面
    30款css3实现的鼠标经过图片显示描述特效
    dede让channelartlist标签支持currentstyle属性 完美解决
    织梦导航 currentstyle 点击li添加class类 样式
    论坛首页显示板块,但没有权限点不进去
    医疗窗口右下角弹出抖动效果
    joomla搬家之后打不开 首页404错误
    Discuz X3游客看小图功能导致文字内容隐藏的【修复方法】
  • 原文地址:https://www.cnblogs.com/wang-jing/p/4819472.html
Copyright © 2011-2022 走看看