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\t\t%s\t%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的字段多

 

posted on 2015-09-18 15:58  j.w  阅读(319)  评论(0编辑  收藏  举报