1. 程式人生 > >Nodejs學習筆記(四)與MySQL互動(felixge/node-mysql)

Nodejs學習筆記(四)與MySQL互動(felixge/node-mysql)

               
  • 目錄

    簡介和安裝 測試MySQL 認識一下Connection Options MYSQL CURD 插入 更新 查詢 刪除 Nodejs 呼叫帶out引數的儲存過程,並得到out引數返回值 結束資料庫連線兩種方法和區別 連線池Pooling connections 建立 其它連線池配置選項 釋放 使用示例 斷線重連 其它...

    簡介和安裝

      Node.js與MySQL

    互動操作有很多庫,具體可以在 https://www.npmjs.org/search?q=mysql  檢視。

      我選擇了felixge/node-mysql,用的人比較多,先隨大溜看看它的使用,暫時沒有太過糾結於各庫之間的執行效能問題,對其它庫有研究的筒子也可以分享一下效能要求較高時的選擇^_^! 

      

      地址:https://github.com/felixge/node-mysql

           https://www.npmjs.org/package/mysql

    This is a node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed

      用純JavaScript實現。MIT 100%!

      安裝

    npm install mysql

      \  

      注意:安裝前先把目錄cd到node.exe所在目錄下,這樣執行安裝命令時,會找到目錄下node_modules,並安裝在此目錄下,否則使用mysql時,你會出現 Error: Cannot find module 'mysql' 

    測試MySQL

      MySQL版本:5.5

      在官方示例的基礎下修改一下並測試:

      \ 

    \ view source print
    ? 01. var mysql  = require('mysql');  //呼叫MySQL模組 02.   03. //建立一個connection 04. var connection = mysql.createConnection({     05. host     : '192.168.0.200',       //主機 06. user     : 'root',               //MySQL認證使用者名稱 07. pass<a href="http://www.it165.net/edu/ebg/" target="_blank" class="keylink">word</a> :'abcd',        //MySQL認證使用者密碼 08. port: '3306',                   //埠號 09. }); 10. //建立一個connection 11. connection.connect(function(err){ 12. if(err){        13. console.log('[query] - :'+err); 14. return; 15. } 16. console.log('[connection connect]  succeed!'); 17. });  18. //執行SQL語句 19. connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { 20. if (err) { 21. console.log('[query] - :'+err); 22. return; 23. } 24. console.log('The solution is: ', rows[0].solution);  25. });  26. //關閉connection 27. connection.end(function(err){ 28. if(err){        29. return; 30. } 31. console.log('[connection end] succeed!'); 32. }); 測試示例原始碼

      成功執行!

    認識一下Connection Options

      要想建立一個數據庫連線,先就要認識清楚Options

      host:主機地址 (預設:localhost)

      user:使用者名稱

      password:密碼

      port:埠號 (預設:3306)

      database:資料庫名

      charset:連線字符集(預設:'UTF8_GENERAL_CI',注意字符集的字母都要大寫)

      localAddress:此IP用於TCP連線(可選)

      socketPath:連線到unix域路徑,當使用 host 和 port 時會被忽略

      timezone:時區(預設:'local')

      connectTimeout:連線超時(預設:不限制;單位:毫秒)

      stringifyObjects:是否序列化物件(預設:'false' ;與安全相關https://github.com/felixge/node-mysql/issues/501)

      typeCast:是否將列值轉化為本地JavaScript型別值 (預設:true)

      queryFormat:自定義query語句格式化方法 https://github.com/felixge/node-mysql#custom-format

      supportBigNumbers:資料庫支援bigint或decimal型別列時,需要設此option為true (預設:false)

      bigNumberStrings:supportBigNumbers和bigNumberStrings啟用 強制bigint或decimal列以JavaScript字串型別返回(預設:false)

      dateStrings:強制timestamp,datetime,data型別以字串型別返回,而不是JavaScript Date型別(預設:false)

      debug:開啟除錯(預設:false)

      multipleStatements:是否許一個query中有多個MySQL語句 (預設:false)

      flags:用於修改連線標誌,更多詳情:https://github.com/felixge/node-mysql#connection-flags

      ssl:使用ssl引數(與crypto.createCredenitals引數格式一至)或一個包含ssl配置檔名稱的字串,目前只捆綁Amazon RDS的配置檔案

      其它:

      可以使用URL形式的加接字串,不多介紹了,不太喜歡那種格式,覺得可讀性差,也易出錯,想了解的可以去主頁上看。

    MYSQL CURD

       首先建立一個測試資料庫nodesample,在資料庫中建一個userinfo表

    view source print ? 01. CREATE DATABASE IF NOT EXISTS nodesample CHARACTER SET UTF8; 02.   03. USE nodesample; 04.   05. SET FOREIGN_KEY_CHECKS=0; 06.   07. DROP TABLE IF EXISTS `userinfo`; 08. CREATE TABLE `userinfo` ( 09. `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵', 10. `UserName` varchar(64) NOT NULL COMMENT '使用者名稱', 11. `UserPass` varchar(64) NOT NULL COMMENT '使用者密碼', 12. PRIMARY KEY (`Id`) 13.