Nodejs學習筆記(四)與MySQL互動(felixge/node-mysql)
目錄
簡介和安裝 測試MySQL 認識一下Connection Options MYSQL CURD 插入 更新 查詢 刪除 Nodejs 呼叫帶out引數的儲存過程,並得到out引數返回值 結束資料庫連線兩種方法和區別 連線池Pooling connections 建立 其它連線池配置選項 釋放 使用示例 斷線重連 其它...簡介和安裝
Node.js與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
在官方示例的基礎下修改一下並測試:
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.