您好,登錄后才能下訂單哦!
這篇文章主要介紹了nodejs中如何連接數據庫,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
nodejs連接mysql
1.準備工作
在nodejs中沒有mysql模塊,但npm中提供了mysql,所以可以使用npm安裝mysql
命令:npm install mysql, 會生成 node_modules 文件夾 ,如圖
執行后發現報了一個警告,說沒有package.json 這個文件,只需要執行 npm init -f 的命令就會生成一個這個文件
2.直接連接數據庫
mysql.createConnection(Object) 方法與 mysql.createPool(Object)的參數
host | 連接數據庫所在的主機名. (默認: localhost) |
port | 連接端口. (默認: 3306) |
localAddress | 用于TCP連接的IP地址. (可選) |
socketPath | 鏈接到unix域的路徑。在使用host和port時該參數會被忽略. |
user | MySQL用戶的用戶名. |
password | MySQL用戶的密碼. |
database | 鏈接到的數據庫名稱 (可選). |
charset | 連接的字符集. (默認: 'UTF8_GENERAL_CI'.設置該值要使用大寫!) |
timezone | 儲存本地時間的時區. (默認: '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 mysql = require('mysql'); //調用MySQL模塊 //創建一個connection var connection = mysql.createConnection({ host: '192.168.3.3', //主機 user: 'root', //MySQL認證用戶名 password: 'x5', //MySQL認證用戶密碼 database: 'dason_yu', port: '3306' //端口號 }); //創建一個connection connection.connect(function(err){ if(err){ console.log('[query] - :'+err); return; } console.log('[connection connect] succeed!'); }); //執行sql語句 var userAddSql = 'insert into user (id,name,money) values(?,?,?)'; var param = [3,'ccc',200]; /** * 執行所有類型的 sql 語句 * query(sql,arr[],function) * @parms: sql:sql語句 arr: 填充站位符的數組,可以缺省 * function: 回調函數,result: 結果集,對象組成的數組 */ connection.query(userAddSql,param,function(err,rs){ if(err){ console.log('insert err:',err.message); return; } console.log('insert success'); }); //關閉connection connection.end(function(err){ if(err){ console.log(err.toString()); return; } console.log('[connection end] succeed!'); });
3.使用連接池連接數據庫
將下面代碼寫到 httpServer.js 文件中
使用在命令行窗口中 node httpServer.js 運行
var mysql = require('mysql'); //用于創建數據庫連接 var pool = mysql.createPool({// 創建數據庫連接池 host : '127.0.0.1' , user : 'root' , password : 'root' , database : 'dason', multipleStatements: true }); /** * 獲取數據庫連接 * @parms: err:異常 connnection:數據庫連接對象 * */ pool.getConnection(function(err,connection){ if(err){ console.log(err); } /** * 執行所有類型的 sql 語句 * query(sql,arr[],function) * @parms: sql:sql語句 arr: 填充站位符的數組,可以缺省 * function: 回調函數,result: 結果集,對象組成的數組 */ connection.query('SELECT * FROM user',function(err,result){ console.log(result); connection.release();//將連接放回連接池 }); });
結果:
[ RowDataPacket { id: 1, name: 'a', email: 'a@123' }, RowDataPacket { id: 2, name: 'b', email: 'b@123' }, RowDataPacket { id: 4, name: 'd', email: 'd@123' }, RowDataPacket { id: 5, name: 'e', email: 'e@123' }, RowDataPacket { id: 6, name: 'f', email: 'f@123' }, RowDataPacket { id: 3, name: 'c', email: 'c@123' }, RowDataPacket { id: 7, name: 'g', email: 'g@123' } ]
4. end() 與 destroy()、release()
end() 接受一個回調函數,并且會在query結束之后才觸發,如果query出錯,仍然會終止鏈接,錯誤會傳遞到回調函數中處理。
destroy() 立即終止數據庫連接,即使還有query沒有完成,之后的回調函數也不會在觸發。
release() 將連接放回連接池中。
5.package.json
npm install express –save
npm install express –save-dev
上面代碼表示單獨安裝express模塊,
–save參數表示將該模塊寫入dependencies屬性,
–save-dev表示將該模塊寫入devDependencies屬性。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“nodejs中如何連接數據庫”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。