首页 > 数据库 >uniapp sqlite方法封装

uniapp sqlite方法封装

时间:2024-02-02 12:22:57浏览次数:36  
标签:uniapp sqlite 封装 item plus sql data any condition

var dbName = 'xxx' // 数据库名称
var dbPath = '_doc/xxx.db' // 数据库地址,推荐以下划线为开头   _doc/xxx.db

// 判断数据库是否打开
const isOpen = (plus: any) => {
  // 数据库打开了就返回 true,否则返回 false
  var open = plus.sqlite.isOpenDatabase({
    name: dbName, // 数据库名称
    path: dbPath, // 数据库地址
  })
  return open
}

// 创建数据库 或 有该数据库就打开
const openSqlite = (plus: any) => {
  return new Promise((resolve, reject) => {
    // 打开数据库
    plus.sqlite.openDatabase({
      name: dbName,
      path: dbPath,
      success(e) {
        resolve(e) // 成功回调
      },
      fail(e) {
        reject(e) // 失败回调
      },
    })
  })
}
// 关闭数据库
const closeSqlite = (plus: any) => {
  return new Promise((resolve, reject) => {
    plus.sqlite.closeDatabase({
      name: dbName,
      success(e) {
        resolve(e)
      },
      fail(e) {
        reject(e)
      },
    })
  })
}

///原生的sql操作
const SqlExecute = (sql: string, plus: any) => {
  return SqlSelect(sql, plus)
}
//执行原生的select语句
const SqlSelect = (sql: string, plus: any) => {
  return new Promise((resolve, reject) => {
    plus.sqlite.selectSql({
      name: dbName,
      sql,
      success(e) {
        resolve(e)
      },
      fail(e) {
        reject(e)
      },
    })
  })
}
//创建表字段
const JsCreateTableType = (dbTable: string, data: any, plus: any) => {
  var sql = ''
  if (dbTable) {
    data = Object.entries(data)
      .map((item: any) => {
        var typeName = ''
        switch (item[1].constructor) {
          case Number:
            if (Math.floor(item[1]) == item[1]) {
              typeName = 'INT'
            } else {
              typeName = 'DOUBLE'
            }
            break
          case String:
            typeName = 'TEXT'
            break
          case Boolean:
            typeName = 'BOOLEAN'
            break
          case Date:
            typeName = 'DATETIME'
            break
        }
        return item[0] + ' ' + typeName
      })
      .join(',')

    sql = `CREATE TABLE IF NOT EXISTS ${dbTable}("id" INTEGER PRIMARY KEY AUTOINCREMENT,${data})`
    return SqlExecute(sql, plus)
  }
}

//新建
const JsInsertTableData = (dbTable: string, data: any, plus: any) => {
  var sql = ''
  if (data) {
    var condition = <any>[]
    var sqlValue = <any>[]
    Object.entries(data).forEach((item) => {
      condition.push(`'${item[0]}'`)
      if (item[1] != undefined) {
        if (typeof item[1] == 'string') {
          sqlValue.push(`'${item[1]}'`)
        } else {
          sqlValue.push(item[1])
        }
      }
    })
    condition = condition.join(',')
    sqlValue = sqlValue.join(',')
    sql = `INSERT INTO ${dbTable} (${condition}) VALUES(${sqlValue})`
    return SqlExecute(sql, plus)
  }
}
//查询
const JsSelectTableData = (dbTable: string, data: any, plus: any) => {
  var sql = ''
  var condition = <any>[]
  if (data) {
    Object.entries(data).forEach((item) => {
      if (item[1] != undefined) {
        if (typeof item[1] == 'string') {
          condition.push(`${item[0]} = '${item[1]}'`)
        } else {
          condition.push(`${item[0]} = ${item[1]}`)
        }
      }
    })
    condition = condition.join(' AND ')
    sql = `SELECT * FROM ${dbTable} WHERE ${condition}`
  } else {
    sql = `SELECT * FROM ${dbTable}`
  }
  return SqlSelect(sql, plus)
}
//编辑
const JsUpdate = (dbTable: string, data: any, plus: any) => {
  var sql = ''
  var condition = <any>[]
  if (data) {
    Object.entries(data).forEach((item) => {
      if (item[1] != undefined && item[0] != 'id') {
        if (typeof item[1] == 'string') {
          condition.push(`${item[0]} = '${item[1]}'`)
        } else {
          condition.push(`${item[0]} = ${item[1]}`)
        }
      }
    })
    condition = condition.join(',')
    sql = `UPDATE ${dbTable} SET ${condition} where id = ${data.id}`
    return SqlExecute(sql, plus)
  }
}
// 删除
const JsDeleteTableData = (dbTable: string, data: any, plus: any) => {
  var sql = ''
  if (data) {
    var condition = <any>[]
    Object.entries(data).forEach((item) => {
      if (item[1] != undefined) {
        if (typeof item[1] == 'string') {
          condition.push(`${item[0]} = '${item[1]}'`)
        } else {
          condition.push(`${item[0]} = ${item[1]}`)
        }
      }
    })
    condition = condition.join(' AND ')
    sql = `DELETE FROM ${dbTable} WHERE ${condition}`
    return SqlExecute(sql, plus)
  }
}

export default {
  isOpen,
  openSqlite,
  closeSqlite,
  JsCreateTableType,
  JsInsertTableData,
  JsSelectTableData,
  JsUpdate,
  JsDeleteTableData,
}

 

var dbName = 'leadinno' // 数据库名称 var dbPath = '_doc/leadinno.db' // 数据库地址,推荐以下划线为开头   _doc/xxx.db
// 判断数据库是否打开 const isOpen = (plus: any) => {   // 数据库打开了就返回 true,否则返回 false   var open = plus.sqlite.isOpenDatabase({     name: dbName, // 数据库名称     path: dbPath, // 数据库地址   })   return open }
// 创建数据库 或 有该数据库就打开 const openSqlite = (plus: any) => {   return new Promise((resolve, reject) => {     // 打开数据库     plus.sqlite.openDatabase({       name: dbName,       path: dbPath,       success(e) {         resolve(e) // 成功回调       },       fail(e) {         reject(e) // 失败回调       },     })   }) } // 关闭数据库 const closeSqlite = (plus: any) => {   return new Promise((resolve, reject) => {     plus.sqlite.closeDatabase({       name: dbName,       success(e) {         resolve(e)       },       fail(e) {         reject(e)       },     })   }) }
///原生的sql操作 const SqlExecute = (sql: string, plus: any) => {   // return new Promise((resolve, reject) => {   //   plus.sqlite.executeSql({   //     name: dbName,   //     sql,   //     success(e) {   //       resolve(e)   //     },   //     fail(e) {   //       reject(e)   //     },   //   })   // })   return SqlSelect(sql, plus) } //执行原生的select语句 const SqlSelect = (sql: string, plus: any) => {   return new Promise((resolve, reject) => {     plus.sqlite.selectSql({       name: dbName,       sql,       success(e) {         resolve(e)       },       fail(e) {         reject(e)       },     })   }) } //通过对象创建数据库,使用对象的数据类型 const JsCreateTableType = (dbTable: string, data: any, plus: any) => {   var sql = ''   if (dbTable) {     data = Object.entries(data)       .map((item: any) => {         var typeName = ''         switch (item[1].constructor) {           case Number:             if (Math.floor(item[1]) == item[1]) {               typeName = 'INT'             } else {               typeName = 'DOUBLE'             }             break           case String:             typeName = 'TEXT'             break           case Boolean:             typeName = 'BOOLEAN'             break           case Date:             typeName = 'DATETIME'             break         }         return item[0] + ' ' + typeName       })       .join(',')
    sql = `CREATE TABLE IF NOT EXISTS ${dbTable}("id" INTEGER PRIMARY KEY AUTOINCREMENT,${data})`     return SqlExecute(sql, plus)   } }
//通过对象插入数据 const JsInsertTableData = (dbTable: string, data: any, plus: any) => {   var sql = ''   if (data) {     var condition = <any>[]     var sqlValue = <any>[]     Object.entries(data).forEach((item) => {       condition.push(`'${item[0]}'`)       if (item[1] != undefined) {         if (typeof item[1] == 'string') {           sqlValue.push(`'${item[1]}'`)         } else {           sqlValue.push(item[1])         }       }     })     condition = condition.join(',')     sqlValue = sqlValue.join(',')     sql = `INSERT INTO ${dbTable} (${condition}) VALUES(${sqlValue})`     return SqlExecute(sql, plus)   } } //通过对象选择数据 const JsSelectTableData = (dbTable: string, data: any, plus: any) => {   var sql = ''   var condition = <any>[]   if (data) {     Object.entries(data).forEach((item) => {       if (item[1] != undefined) {         if (typeof item[1] == 'string') {           condition.push(`${item[0]} = '${item[1]}'`)         } else {           condition.push(`${item[0]} = ${item[1]}`)         }       }     })     condition = condition.join(' AND ')     sql = `SELECT * FROM ${dbTable} WHERE ${condition}`   } else {     sql = `SELECT * FROM ${dbTable}`   }   return SqlSelect(sql, plus) } //通过对象获取 const JsUpdate = (dbTable: string, data: any, plus: any) => {   var sql = ''   var condition = <any>[]   if (data) {     Object.entries(data).forEach((item) => {       if (item[1] != undefined && item[0] != 'id') {         if (typeof item[1] == 'string') {           condition.push(`${item[0]} = '${item[1]}'`)         } else {           condition.push(`${item[0]} = ${item[1]}`)         }       }     })     condition = condition.join(',')     sql = `UPDATE ${dbTable} SET ${condition} where id = ${data.id}`     return SqlExecute(sql, plus)   } } // 删除表里的数据 const JsDeleteTableData = (dbTable: string, data: any, plus: any) => {   var sql = ''   if (data) {     var condition = <any>[]     Object.entries(data).forEach((item) => {       if (item[1] != undefined) {         if (typeof item[1] == 'string') {           condition.push(`${item[0]} = '${item[1]}'`)         } else {           condition.push(`${item[0]} = ${item[1]}`)         }       }     })     condition = condition.join(' AND ')     sql = `DELETE FROM ${dbTable} WHERE ${condition}`     return SqlExecute(sql, plus)   } }
export default {   isOpen,   openSqlite,   closeSqlite,   JsCreateTableType,   JsInsertTableData,   JsSelectTableData,   JsUpdate,   JsDeleteTableData, }

标签:uniapp,sqlite,封装,item,plus,sql,data,any,condition
From: https://www.cnblogs.com/baibyy/p/18002964

相关文章

  • uniapp在H5中排除底部和顶部导航栏
    在app和小程序中,uniapp的100vh不会将底部和顶部导航栏的高度放进去,所以100vh就是整个中间内容的高度,但是在H5中100vh是把顶部和底部导航栏一起放进去的高度,所以为了要在顶部和顶部导航栏排除在H5应用中,需要在内容的高度里设置一下,减去顶部和底部的导航栏高度,为此在uniapp中使用了-......
  • SpringBoot3 整合 SQLite3 + MybatisPuls
    !!前置要求!!假设你已经掌握SpringBoot3、Maven、Mybaits、MybatisPuls。假设你已经新建好SQLite3测试库。如果没有可以按此结构新建,保存到任意位置。1.项目结构2.依赖注意SpringBoot3版本这边用最新的打包失败,所以改用3.1.2pom.xml<?xmlversion="1.0"encoding="......
  • Vue中如何对Axios进行二次封装
    作为一个前端开发者,你一定对Axios这个强大的HTTP库非常熟悉。它不仅简化了与后端API的通信,而且还提供了许多强大的功能,如拦截器、取消请求等。但是在实际开发中,我们经常需要对Axios进行二次封装,以便更好地适应我们的业务需求。今天,我将为大家分享一下如何在Vue中对Axios进行二次封......
  • vue3,封装检测元素大小变化的自定义指令
    1//resizeObserver.ts2//监听元素大小变化的指令3constmap=newWeakMap()4constob=newResizeObserver((entries)=>{5for(constentryofentries){6//获取dom元素的回调7consthandler=map.get(entry.target)8//存在回调函......
  • 在Visual Studio中部署GDAL库的C++版本(包括SQLite、PROJ等依赖)
      本文介绍在VisualStudio软件中配置、编译C++环境下GDAL库、SQLite环境与PROJ库的详细方法。  GDAL库是一个非常方便的地理数据处理库,但其在C++环境下的配置与编译流程较为复杂;尤其是最新的GDAL3及以上版本,其在C++环境中的配置更是首先需要满足许多其他的环境配置条件(包括......
  • wpf 数据绑定 INotifyPropertyChanged封装
    BindableBase.cspublicabstractclassBindableBase:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;//调用方法:publicstringName{get=>name;set{SetProperty<string>(refname,value);}}......
  • D20XB100-ASEMI整流桥D20XB100参数、封装、规格
    编辑:llD20XB100-ASEMI整流桥D20XB100参数、封装、规格型号:D20XB100品牌:ASEMI正向电流(Id):20A反向耐压(VRRM):1000V正向浪涌电流:300A正向电压(VF):1.05V引脚数量:5芯片个数:4芯片尺寸:MIL功率(Pd):大功率设备封装:GBJ-5工作温度:-40°C~150°C类型:插件、整流桥D20XB100描述:ASEMI品牌D20XB100是采......
  • D20XB100-ASEMI整流桥D20XB100参数、封装、规格
    编辑:llD20XB100-ASEMI整流桥D20XB100参数、封装、规格型号:D20XB100品牌:ASEMI正向电流(Id):20A反向耐压(VRRM):1000V正向浪涌电流:300A正向电压(VF):1.05V引脚数量:5芯片个数:4芯片尺寸:MIL功率(Pd):大功率设备封装:GBJ-5工作温度:-40°C~150°C类型:插件、整流桥D20XB100描述:ASEMI......
  • D20XB60-ASEMI整流桥D20XB60参数、封装、尺寸
    编辑:llD20XB60-ASEMI整流桥D20XB60参数、封装、尺寸型号:D20XB60品牌:ASEMI封装:GBJ-5最大重复峰值反向电压:600V最大正向平均整流电流(Vdss):20A功率(Pd):芯片个数:4引脚数量:5类型:插件、整流桥正向浪涌电流:300A正向电压:1.05V最大输出电压(RMS):封装尺寸:如图工作温度:-40°C~1......
  • 封装
    ......