nodejs使用sqlIte总结(含前端原生jsAjax请求使用)

SQLite node操作

添加依赖包

// npm install --save sqlite3
 "dependencies": {
	"sqlite3": "^5.0.2"
}

使用node操作sqlite3数据库

官方api文档

其实官方文档已经说得很清楚了
下面写一点补充

  • 如何使用async/await来访问数据库

在sql语句中添加参数有一下办法

  1. 使用?在后面的run each方法的参数中使用数组来对应
  2. 使用$param 在参数中使用对象{$param:param}
  3. 土办法,直接用字符串拼接
  4. 使用模板字符串 注意模板字符串是用 ` 来包含的其中使用${param}替换参数

第二个要注意的是如果Statement#each()等方法返回为空则不会调用回调
我的解决方法是在后面的回调判断count==0
如果返回为空则不会调用回调

// dbc 部分
function selectStudent(params) {
  let sql = `SELECT sname,cname,snumber,age,gender FROM student WHERE snumber=$snumber`
  // 打开数据库
  let db = new sqlite3.Database(dbPath, err => {
    if (err !== null) console.log(err);  // 输出错误信息
  });
  let select = db.prepare(sql)
  return new Promise((resolve,rejects)=>{
    select.each(params, (err, row)=> {
      if(err) {console.log(err);rejects(null)};
      resolve(row)
    },(err,count)=>{
      if(count==0) resolve(null)
    })
    select.finalize()
  })
 
}
// 调用 当然使用await的话函数应该是async的
let res = await dbc.selectStudent({$snumber:snumber})

sqlite管理工具

  • navivat for sqlite
  • vscode SQLTools插件(?? 这个不知道为什么我使用的时候有bug,可能是操作有问题)
  • 吐槽一下vscode SQLTools的坑

在vscode中安装SQLtools插件来管理我放在项目里的数据库.db文件,尼玛搞了半天我明明加了数据,但是使用node代码一直查不到,于是我又去用android stdio上面的插件看,发现数据库里面根本没有数据,那我vscode里面加的数据到哪里去了,甚至还能在管理插件里看到,这时候我才发现,即便我删除了.db文件也可以连接到数据库😡,麻了,又去下了个navicat for sqlite 果然是那个插件有问题,不知道是不是我的使用方法有误,不过sqlite又不是sql,不就是连接文件就可以了吗,🤮

前台ajax原生js请求的使用

直接操作

 var xhr = new XMLHttpRequest();
//设置请求的类型及url
xhr.open(method, baseUrl, true);
//post请求一定要添加请求头才行不然会报错
 xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 // 设置响应
xhr.onreadystatechange = () => {
   if (xhr.readyState == 4 && xhr.status == 200) {
       //返回后的操作
	}
};
//发送请求
xhr.send(`data=${JSON.stringify(data)}`)

注意:

  1. onreadystatechange不是返回的时候调用,看名字就能猜到是readState改变的时候调用的,
    所以判断返回信息是通过readStatestatus而不是触发就代表返回了
  2. onreadstatechange中如果使用箭头函数this不能拿到ctx对象

w3对onreadystatechange函数的解释
w3

包装为promise

function REQ(method, baseUrl, data) {
    return new Promise((resolve, reject) => {
        var xhr = new XMLHttpRequest();
        //设置请求的类型及url
        xhr.open(method, baseUrl, true);
        //post请求一定要添加请求头才行不然会报错
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.onreadystatechange = () => {
            if (xhr.readyState == 4 && xhr.status == 200) {
                resolve(xhr)
            }
        };
        //发送请求
        if (data != undefined && data != null)
            xhr.send(`data=${JSON.stringify(data)}`)
        else xhr.send();
    })
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值