当前位置:   article > 正文

uni-app集成使用SQLite_uniapp集成sqllite

uniapp集成sqllite

一、打开uni-app中SQLite

二、封装sqlite.js 

  1. module.exports = {
  2. dbName: 'chat', // 数据库名称
  3. dbPath: '_doc/chat.db', // 数据库地址,推荐以下划线为开头 _doc/xxx.db
  4. /**
  5. * @Description: 创建数据库 或 有该数据库就打开
  6. * @author: ZXL
  7. * @createTime: 2023-10-12 09:23:10
  8. * @Copyright by 蓝创科技有限公司
  9. */
  10. openSqlite() {
  11. return new Promise((resolve, reject) => {
  12. // 打开数据库
  13. plus.sqlite.openDatabase({
  14. name: this.dbName,
  15. path: this.dbPath,
  16. success(e) {
  17. resolve(e);
  18. },
  19. fail(e) {
  20. reject(e);
  21. }
  22. })
  23. })
  24. },
  25. /**
  26. * @Description: 判断数据库是否打开 数据库打开了就返回 true,否则返回 false
  27. * @author: ZXL
  28. * @createTime: 2023-10-12 08:43:03
  29. * @Copyright by 蓝创科技有限公司
  30. */
  31. isOpen() {
  32. var open = plus.sqlite.isOpenDatabase({
  33. name: this.dbName, // 数据库名称
  34. path: this.dbPath // 数据库地址
  35. })
  36. return open;
  37. },
  38. /**
  39. * @Description: 创建表(executeSql是执行增删改等操作的SQL语句)
  40. * @author: ZXL
  41. * @createTime: 2023-10-12 08:43:03
  42. * @Copyright by 蓝创科技有限公司
  43. */
  44. ExecuteSQL(sql) {
  45. return new Promise((resolve, reject) => {
  46. plus.sqlite.executeSql({
  47. name: this.dbName,
  48. sql: sql,
  49. success(e) {
  50. resolve(e);
  51. },
  52. fail(e) {
  53. reject(e);
  54. }
  55. })
  56. })
  57. },
  58. /**
  59. * @Description: 查询表数据
  60. * @author: ZXL
  61. * @createTime: 2023-10-12 08:52:15
  62. * @Copyright by 蓝创科技有限公司
  63. */
  64. getTable(dbTable){
  65. return new Promise((resolve, reject) => {
  66. plus.sqlite.selectSql({
  67. name: this.dbName,
  68. sql: `SELECT * FROM ${dbTable}`,
  69. success(e) {
  70. resolve(e);
  71. },
  72. fail(e) {
  73. console.log(e)
  74. reject(e);
  75. }
  76. })
  77. })
  78. },
  79. /**
  80. * @Description: 查询数据库所有表
  81. * @author: ZXL
  82. * @createTime: 2023-10-12 09:01:05
  83. * @Copyright by 蓝创科技有限公司
  84. */
  85. QueryAllTables(){
  86. return new Promise((resolve, reject) => {
  87. plus.sqlite.selectSql({
  88. name: this.dbName,
  89. sql: "SELECT * FROM sqlite_master WHERE type='table'",
  90. success(e) {
  91. resolve(e);
  92. },
  93. fail(e) {
  94. console.log(e)
  95. reject(e);
  96. }
  97. })
  98. })
  99. },
  100. /**
  101. * @Description: 查询数据库下的所有表
  102. * @author: ZXL
  103. * @createTime: 2023-10-12 09:20:33
  104. * @Copyright by 蓝创科技有限公司
  105. */
  106. selectTableName(){
  107. return new Promise((resolve, reject) => {
  108. plus.sqlite.selectSql({
  109. name: this.dbName,
  110. sql: "select * FROM chat where type='table'",
  111. success(e) {
  112. resolve(e);
  113. },
  114. fail(e) {
  115. console.log(e)
  116. reject(e);
  117. }
  118. })
  119. })
  120. },
  121. /**
  122. * @Description: 新增数据
  123. * @author: ZXL
  124. * 向表格里添加数据 sql:'INSERT INTO dbTable VALUES('x','x','x')' 对应新增
  125. * 或者 sql:'INSERT INTO dbTable ('x','x','x') VALUES('x','x','x')' 具体新增
  126. * 插入 INSERT INTO 、 dbTable 是表名、根据表头列名插入列值
  127. * @createTime: 2023-10-12 10:21:32
  128. * @Copyright by 蓝创科技有限公司
  129. */
  130. //使用
  131. // let arr = [
  132. // {id:121,dept_id: '100',dept_name: '你好呀'},
  133. // {id:332,dept_id: '200',dept_name: '你好呀'},
  134. // ]
  135. // arr.map((item) => {
  136. // let condition = "'id','dept_id','dept_name'"
  137. // let data = `'${item.id}','${item.dept_id}','${item.dept_name}'`
  138. // DB.insertTableData('表名',数据,字段).then((res) => {})
  139. // .catch((error) => {
  140. // console.log('失败', error)
  141. // })
  142. // })
  143. insertTableData(dbTable, data, condition) {
  144. // 判断有没有传参
  145. if (dbTable !== undefined && data !== undefined) {
  146. // 判断传的参是否有值
  147. var bol = (JSON.stringify(data) == "{}");
  148. if (!bol) {
  149. if (condition == undefined) var sql = `INSERT INTO ${dbTable} VALUES('${data}')`;
  150. else var sql = `INSERT INTO ${dbTable} (${condition}) VALUES(${data})`;
  151. return new Promise((resolve, reject) => {
  152. // 表格添加数据
  153. plus.sqlite.executeSql({
  154. name: this.dbName,
  155. sql: sql,
  156. success(e) {
  157. resolve(e);
  158. },
  159. fail(e) {
  160. reject(e);
  161. }
  162. })
  163. })
  164. } else {
  165. return new Promise((resolve, reject) => { reject("错误添加") })
  166. }
  167. } else {
  168. return new Promise((resolve, reject) => { reject("错误添加") })
  169. }
  170. },
  171. /**
  172. * @Description: 数据库建表
  173. * @author: ZXL
  174. * 数据库建表 sql:'CREATE TABLE IF NOT EXISTS dbTable("id" varchar(50),"name" TEXT)
  175. * 创建 CREATE TABLE IF NOT EXISTS 、 dbTable 是表名,不能用数字开头、括号里是表格的表头
  176. * @createTime: 2023-10-12 09:26:44
  177. * @Copyright by 蓝创科技有限公司
  178. */
  179. // 使用
  180. // DB.createTable('bus_mzpy','"id" INTEGER PRIMARY KEY AUTOINCREMENT,"mzpy_name" TEXT ,"dept_id" INTEGER ,"dept_name" TEXT ,"mzpy_concent" TEXT')
  181. createTable(dbTable, data) {
  182. return new Promise((resolve, reject) => {
  183. // executeSql: 执行增删改等操作的SQL语句
  184. plus.sqlite.executeSql({
  185. name: this.dbName,
  186. sql: `CREATE TABLE IF NOT EXISTS ${dbTable}(${data})`,
  187. success(e) {
  188. resolve(e);
  189. },
  190. fail(e) {
  191. reject(e);
  192. }
  193. })
  194. })
  195. },
  196. /**
  197. * @Description: 数据库删表 sql:'DROP TABLE dbTable'
  198. * @author: ZXL
  199. * @createTime: 2023-10-12 09:28:46
  200. * @Copyright by 蓝创科技有限公司
  201. */
  202. dropTable(dbTable) {
  203. return new Promise((resolve, reject) => {
  204. plus.sqlite.executeSql({
  205. name: this.dbName,
  206. sql: `DROP TABLE ${dbTable}`,
  207. success(e) {
  208. resolve(e);
  209. },
  210. fail(e) {
  211. reject(e);
  212. }
  213. })
  214. })
  215. },
  216. /**
  217. * @Description: 根据条件向表里插入数据、更新或覆盖
  218. * @author: ZXL
  219. * 根据条件向表格里添加数据 有数据更新、无数据插入
  220. * (建表时需要设置主键) 例如 --- "roomid" varchar(50) PRIMARY KEY
  221. * @createTime: 2023-10-12 09:31:19
  222. * @Copyright by 蓝创科技有限公司
  223. */
  224. insertOrReplaceData(dbTable, data, condition) {
  225. // 判断有没有传参
  226. if (dbTable !== undefined && data !== undefined) {
  227. if (condition == undefined) var sql = `INSERT OR REPLACE INTO ${dbTable} VALUES('${data}')`;
  228. else var sql = `INSERT OR REPLACE INTO ${dbTable} (${condition}) VALUES(${data})`;
  229. return new Promise((resolve, reject) => {
  230. // 表格添加数据
  231. plus.sqlite.executeSql({
  232. name: this.dbName,
  233. sql: sql,
  234. success(e) {
  235. resolve(e);
  236. },
  237. fail(e) {
  238. reject(e);
  239. }
  240. })
  241. })
  242. } else {
  243. return new Promise((resolve, reject) => { reject("错误添加") })
  244. }
  245. },
  246. /**
  247. * @Description: 表里查询数据
  248. * @author: ZXL
  249. * 查询获取数据库里的数据 sql:'SELECT * FROM dbTable WHERE lname = 'lvalue''
  250. * 查询 SELECT * FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值
  251. * @createTime: 2023-10-12 09:44:08
  252. * @Copyright by 蓝创科技有限公司
  253. */
  254. selectTableData(dbTable, lname, lvalue, cc, dd) {
  255. if (dbTable !== undefined) {
  256. let sql;
  257. // 第一个是表单名称,后两个参数是列表名,用来检索
  258. // 两个检索条件
  259. if (lname !== undefined && cc !== undefined) sql=`SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${cc} = '${dd}'`;
  260. // 一个检索条件
  261. if (lname !== undefined && cc == undefined) sql = `SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;
  262. if (lname == undefined) sql = `SELECT * FROM ${dbTable}`;
  263. return new Promise((resolve, reject) => {
  264. // 表格查询数据 执行查询的SQL语句
  265. plus.sqlite.selectSql({
  266. name: this.dbName,
  267. sql: sql,
  268. success(e) {
  269. resolve(e);
  270. },
  271. fail(e) {
  272. reject(e);
  273. }
  274. })
  275. })
  276. } else {
  277. return new Promise((resolve, reject) => { reject("错误查询") });
  278. }
  279. },
  280. /**
  281. * @Description: 表里删除数据
  282. * @author: ZXL
  283. * 删除表里的数据 sql:'DELETE FROM dbTable WHERE lname = 'lvalue''
  284. * 删除 DELETE FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值
  285. * @createTime: 2023-10-12 09:40:37
  286. * @Copyright by 蓝创科技有限公司
  287. */
  288. deleteTableData(dbTable, lname, lvalue, ww, ee) {
  289. if(dbTable !== undefined){
  290. let sql;
  291. if(lname == undefined){
  292. sql = `DELETE FROM ${dbTable}`;
  293. }else{
  294. if (ww !== undefined) {
  295. // 两个检索条件
  296. sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${ww} = '${ee}'`;
  297. } else {
  298. // 一个检索条件
  299. sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;
  300. }
  301. }
  302. return new Promise((resolve, reject) => {
  303. // 删除表数据
  304. plus.sqlite.executeSql({
  305. name: this.dbName,
  306. sql: sql,
  307. success(e) {
  308. resolve(e);
  309. },
  310. fail(e) {
  311. reject(e);
  312. }
  313. })
  314. })
  315. } else {
  316. return new Promise((resolve, reject) => { reject("错误删除") });
  317. }
  318. },
  319. /**
  320. * @Description: 表里修改数据
  321. * @author: ZXL
  322. * 修改数据表里的数据 sql:"UPDATE dbTable SET 列名 = '列值',列名 = '列值' WHERE lname = 'lvalue'"
  323. * 修改 UPDATE 、 dbTable 是表名, data: 要修改的列名=修改后列值, lname,lvalue 是查询条件的列名和列值
  324. * @createTime: 2023-10-12 09:37:59
  325. * @Copyright by 蓝创科技有限公司
  326. */
  327. updateTableData(dbTable, data, lname, lvalue) {
  328. let sql;
  329. if (lname == undefined) sql = `UPDATE ${dbTable} SET ${data}`;
  330. else sql = `UPDATE ${dbTable} SET ${data} WHERE ${lname} = '${lvalue}'`;
  331. // WHERE 前面是要修改的列名、列值,后面是条件的列名、列值
  332. return new Promise((resolve, reject) => {
  333. // 修改表数据
  334. plus.sqlite.executeSql({
  335. name: this.dbName,
  336. sql: sql,
  337. success(e) {
  338. resolve(e);
  339. },
  340. fail(e) {
  341. reject(e);
  342. }
  343. })
  344. })
  345. },
  346. /**
  347. * @Description: 获取指定数据条数
  348. * @author: ZXL
  349. * 获取指定数据条数 sql:"SELECT * FROM dbTable ORDER BY 'id' DESC LIMIT 15 OFFSET 'num'"
  350. * dbTable 表名, ORDER BY 代表排序默认正序, id 是排序的条件 DESC 代表倒序,从最后一条数据开始拿
  351. * LIMIT 15 OFFSET '${num}',这句的意思是跳过 num 条拿 15 条数据, num 为跳过多少条数据是动态值
  352. * 例 初始num设为0,就从最后的数据开始拿15条,下次不拿刚获取的数据,所以可以让num为15,这样就能一步一步的拿完所有的数据
  353. * @createTime: 2023-10-12 09:33:43
  354. * @Copyright by 蓝创科技有限公司
  355. */
  356. pullSQL(dbTable, id, num) {
  357. return new Promise((resolve, reject) => {
  358. plus.sqlite.selectSql({
  359. name: this.dbName,
  360. sql: `SELECT * FROM ${dbTable} ORDER BY '${id}' DESC LIMIT 15 OFFSET '${num}'`,
  361. success(e) {
  362. resolve(e);
  363. },
  364. fail(e) {
  365. reject(e);
  366. }
  367. })
  368. })
  369. },
  370. /**
  371. * @Description: 关闭数据库
  372. * @author: ZXL
  373. * @createTime: 2023-10-12 09:23:56
  374. * @Copyright by 蓝创科技有限公司
  375. */
  376. closeSqlite() {
  377. return new Promise((resolve, reject) => {
  378. plus.sqlite.closeDatabase({
  379. name: this.dbName,
  380. success(e) {
  381. resolve(e);
  382. },
  383. fail(e) {
  384. reject(e);
  385. }
  386. })
  387. })
  388. },
  389. }

三、使用 

  1. import DB from '@/utils/sqlite.js'
  2. 类似这样
  3. DB.selectTableData('','','').then((res) => {
  4. }).catch((error) => {
  5. console.log('查询失败', error)
  6. })

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/86443
推荐阅读
相关标签
  

闽ICP备14008679号