Connector/Node.js 是官方的node.js連接mysql的驅動,用于MySQL 5.7.12+ 以上數據庫。在NodeJS開發(fā)中我們經常涉及到操作數據庫,尤其是 MySQL,這是nodejs mysql 連接池。Nodejs要連接MySQL,可以使用Nodejs的MysQL驅動來實現。
mysql官方出品!
Installation
This library is organized in a way that it can be installed into your project using Node.js's npm tool. Choose one of the following methods to get and install MySQL Connector/node.js:
manually download the package from https://dev.mysql.com/downloads/connector/nodejs/ and import the library using npm:
$ npm install mysql-connector-nodejs-8.0.8.tar.gz`
use the @mysql/xdevapi package from https://npmjs.com and install it:
$ npm install @mysql/xdevapi
Please refer to https://npmjs.com for more information on npm.
Node.js中JavaScript操作MySQL方法
一、建立數據庫連接:createConnection(Object)方法
該方法接受一個對象作為參數,該對象有四個常用的屬性host,user,password,database。與php中鏈接數據庫的參數相同。屬性列表如下:
host: 連接數據庫所在的主機名. (默認: localhost)
port: 連接端口. (默認: 3306)
localAddress: 用于TCP連接的IP地址. (可選)
socketPath: 鏈接到unix域的路徑。在使用host和port時該參數會被忽略.
user: MySQL用戶的用戶名.
password: MySQL用戶的密碼.
database: 鏈接到的數據庫名稱 (可選).
charset: 連接的字符集. (默認: 'UTF8_GENERAL_CI'.設置該值要使用大寫!)
timezone: 儲存本地時間的時區(qū). (默認: 'local')
stringifyObjects: 是否序列化對象. See issue #501. (默認: 'false')
insecureAuth: 是否允許舊的身份驗證方法連接到數據庫實例. (默認: false)
typeCast: 確定是否講column值轉換為本地JavaScript類型列值. (默認: true)
queryFormat: 自定義的查詢語句格式化函數.
supportBigNumbers: 數據庫處理大數字(長整型和含小數),時應該啟用 (默認: false).
bigNumberStrings: 啟用 supportBigNumbers和bigNumberStrings 并強制這些數字以字符串的方式返回(默認: false).
dateStrings: 強制日期類型(TIMESTAMP, DATETIME, DATE)以字符串返回,而不是一javascript Date對象返回. (默認: false)
debug: 是否開啟調試. (默認: false)
multipleStatements: 是否允許在一個query中傳遞多個查詢語句. (Default: false)
flags: 鏈接標志.
還可以使用字符串連接數據庫例如:
復制代碼 代碼如下:
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');
二、結束數據庫連接end()和destroy()
end()接受一個回調函數,并且會在query結束之后才觸發(fā),如果query出錯,仍然會終止鏈接,錯誤會傳遞到回調函數中處理。
destroy()立即終止數據庫連接,即使還有query沒有完成,之后的回調函數也不會在觸發(fā)。
三、創(chuàng)建連接池 createPool(Object)
Object和createConnection參數相同。
可以監(jiān)聽connection事件,并設置session值
pool.on('connection', function(connection) {
connection.query('SET SESSION auto_increment_increment=1')
});
connection.release()釋放鏈接到連接池。如果需要關閉連接并且刪除,需要使用connection.destroy()
pool除了接受和connection相同的參數外,還接受幾個擴展的參數
createConnection: 用于創(chuàng)建鏈接的函數. (Default: mysql.createConnection)
waitForConnections: 決定當沒有連接池或者鏈接數打到最大值時pool的行為. 為true時鏈接會被放入隊列中在可用是調用,為false時會立即返回error. (Default: true)
connectionLimit: 最大連接數. (Default: 10)
queueLimit: 連接池中連接請求的烈的最大長度,超過這個長度就會報錯,值為0時沒有限制. (Default: 0)