Node.js连接数据库
连接MySQL数据库
在学习Java的JDBC时, 需要导入一个第三方的驱动jar
包 , 在Node.js中也差不多 , 需要导入mysql
模块
为什么需要导入模块
首先你要知道市面上大大小小的数据库产品几十款 , 每一款的开发商都不一样 , 每一款数据库的底层实现也是不一样 .
假如让每一个程序员都根据每一款数据库产品写一套API , 肯定是不太现实的 .
所以Node.js官方给出API的设计规范 , 每一个厂商都根据设计规范自主开发一套API , 并封装成模块.
这样, 程序员连接你家的数据库产品时 , 只需要导入这些封装好的API即可.
在Node.js中操作数据库
导入模块
//安装模块 npm i mysql //导入模块 const mysql = require('mysql');
获取链接
首先通过createConnection()
方法注册链接 , 返回一个链接的对象
接着调用此对象的connect()
向数据库发起链接
//返回一个链接对象 var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '123123', database: 'my_db' }) connection.connect()
参数名
host
主机域名user
用户名password
数据库密码database
指明我要连接哪一个库
在使用connection.connect()
连接数据库时,可能连接不上 , 这是就会报错,可以使用回调函数来处理
connection.connect(function(err){ if(err) return console.log('连接失败!'+err.message); console.log('连接成功') })
操作数据库
通过connection.query()
来执行sql语句
connection.query('select * from user',function(err,results){ //查询失败 if(err) return console.log(err.message) //查询成功 console.log(results) })
第一个参数是待执行的sql语句
第二个参数是回调函数,这个回调函数的两个参数
- 第一个参数
err
是一个错误对象, 当sql语句执行失败时, 会生成一个错误对象 , 传递给回调函数, 等待处理; 当sql执行成功时,err = null
; - 第二个参数是
results
, sql操作成功后会返回一个结果集 , 当sql语句执行失败时,results=null
若执行的是查询操作 , results为一个数组 , 一行为一个单位
其他的操作 , results则为一个包含执行后状态的对象
预编译语句
前面的sql语句是通过字符串直接写好的 , sql语句是写死的 , 不能再变了 ,如果向再次执行类似的语句还要重新写一遍
这时候可以使用预编译的语句
var sqlStr = 'insert into users values(?,?,?)'
像这样, 在参数的位置使用问号?
充当一个占位符 , 后期使用时只需要替换问号?
的地方即可
在调用connection.query()
方法时 , 需要传入预编译的sql语句 ,
如果只有一个?
占位符, 那么第二个参数可以是数值型, 字符串 , 对象等
var sqlStr = 'select * from users where id = ?' connection.query(sqlStr,2,function(){ if(err) return console.log('操作失败') console.log(results) })
如果有多个?
占位符, 可以传入一个数组, 数组内的元素与占位符一一对应
var sqlStr = 'insert into users values(?,?,?)' connection.query(sqlStr,[5,'小王','10086'],function(err,result){ if(err) return console.log('操作失败') if(err.affectedRows==1) console.log('插入数据成功') })
插入数据的快捷方式
如果数据对象的每个属性和表中的字段一一对应 , 那么可以直接传入一个对象
var sqlStr = 'insert into users set ?'; var u{ id: 10, uname:'小李', ph_num: '10000' } connection.query(sqlStr,u,(err,results)=>{ if(err) return console.log('操作失败') console.log(results); } )
关闭链接
当数据库操作完成之后, 要及时关闭链接 , 防止连接占用大量的资源
调用connection.end()
方法来关闭连接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具