数据驱动和ORM(vscode 和 mysql连接 )

mysql驱动程序

  • 什么是驱动程序

驱动程序是连接内存和其它存储介质的桥梁
mysql驱动程序是连接内存数据和mysql数据的桥梁
mysql驱动程序通常使用 mysql mysql2(mysql-native);
在vscode中下载驱动程序 mysql2
语句:npm i mysql2

创建数据库连接

//获取客户端
const  mysql  =  require ('mysql2' );

//创建与数据库的连接
const  connection  =  mysql.createConnection ({ 
  host:'localhost' ,
  user:'root' ,
  password:'',
  database:'test' 
} );

//简单的查询
//连接.查询
 connection.query(
  'SELECT * FROM`...` ' ,  //增删改查  语句就是mysql里面的语句
//   函数(ERR , 结果, 字段) { 
//     控制台.登录(结果);  //结果包含由服务器返回的行
//     控制台.日志(场);  //字段包含有关结果额外的元数据,如果有的话
//   }
function(err, results,fields){
    console.log(results);
    console.log(fields);  //一般只要两个参数就行。fields不常用
} );


使用promise接口

const mysql = require("mysql2/promise");
async  function test(id){
  //创建一个数据库连接
  const  connection = await mysql.createConnection({
   host:'localhost',
   user:'root',
   password:'',
   database:'',
   multipleStatements:true,   //是否允许有多个sql语句
 });
//  console.log(connection);
const sql = 'select *from  company  where id = ${id}; ';
  const [results] = await  connection.query(sql);
  console.log(results);
connection.end();

}
test(5);

一般我们用execute防止SQL注入攻击
sql注入:用户通过注入sql语句到最终查询中,导致整个sql与预期不符。
使用execute,通过mysql变量防止这种现象

//方法一:
const  mysql = require('mysql2');
const connection = mysql.createConnection({
host:'localhost',
user:'root',
passsword;'',
batabase:''

})
connection.execute(
"select  from  `...`;"
function(err,results){
console.log(results);

})

//方法二:
const  mysql = require("mysql2/promise");
async  function test(id){
const connection = mysql.createConnection({
host:'localhost',
user:'root',
password:'',
database:'',
multipleStatements;true,

});
const sql = `select * from company where id = ? and name = ?;`;
const  [results] = await connection.execute(sql,[id,]);
console.log(results);
connection.end();
}
test(`'';insert into company()values()`);

为了避免没有关闭以前的连接,造成cpu的浪费,我们用连接池

  • 连接池:通过重新使用以前的连接,连接池保持打开状态,而不是在完成连接后关闭,有助于减少连接到MySQL服务器的时间。

由于避免了建立新连接带来的所有开销,因此可以提高查询的延迟。

//获取客户端
const  mysql  =  require ('mysql2';

//创建连接池。特定于池的设置是默认值
const  pool  =  mysql.createPool ({ 
  主机:'localhost' ,
  用户:'root' ,
  数据库:'' ,
  waitForConnections:true//连接正在进行,是否要等待
  connectionLimit:10,默认最大连接限制是10
  queueLimit:0  //排队 不限制长度
});
async function test(id){
 //创建一个数据库连接
 const sql = `select * from employee where id=?;`;
 const  [results] = await pool.execute(sql,[id]);
 console.log(results);
 }
 test(`'';insert into company() values()`);

模糊查询
使用concat函数

//获取客户端
const  mysql  =  require ('mysql2';

//创建连接池。特定于池的设置是默认值
const  pool  =  mysql.createPool ({ 
  主机:'localhost' ,
  用户:'root' ,
  数据库:'' ,
  waitForConnections:true//连接正在进行,是否要等待
  connectionLimit:10//默认最大连接限制是10
  queueLimit:0  //排队 不限制长度
});
async function test(id){
 //创建一个数据库连接
 const sql = `select * from employee where  \`name\` like concat('%',?,'%');`;
 const  [results] = await pool.execute(sql,[id]);
 console.log(results);
 }
 test("段");

  • ORM下一节
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值