sqlite.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. module.exports = {
  2. dbName: 'chat', // 数据库名称
  3. dbPath: '_doc/chat.db', // 数据库地址,推荐以下划线为开头 _doc/xxx.db
  4. // 判断数据库是否打开
  5. isOpen() {
  6. // 数据库打开了就返回 true,否则返回 false
  7. var open = plus.sqlite.isOpenDatabase({
  8. name: this.dbName, // 数据库名称
  9. path: this.dbPath // 数据库地址
  10. })
  11. return open;
  12. },
  13. // 创建数据库 或 有该数据库就打开
  14. openSqlite() {
  15. return new Promise((resolve, reject) => {
  16. // 打开数据库
  17. plus.sqlite.openDatabase({
  18. name: this.dbName,
  19. path: this.dbPath,
  20. success(e) {
  21. resolve(e); // 成功回调
  22. },
  23. fail(e) {
  24. reject(e); // 失败回调
  25. }
  26. })
  27. })
  28. },
  29. // 关闭数据库
  30. closeSqlite() {
  31. return new Promise((resolve, reject) => {
  32. plus.sqlite.closeDatabase({
  33. name: this.dbName,
  34. success(e) {
  35. resolve(e);
  36. },
  37. fail(e) {
  38. reject(e);
  39. }
  40. })
  41. })
  42. },
  43. // 数据库建表 sql:'CREATE TABLE IF NOT EXISTS dbTable("id" varchar(50),"name" TEXT)
  44. // 创建 CREATE TABLE IF NOT EXISTS 、 dbTable 是表名,不能用数字开头、括号里是表格的表头
  45. createTable(dbTable, data) {
  46. return new Promise((resolve, reject) => {
  47. // executeSql: 执行增删改等操作的SQL语句
  48. plus.sqlite.executeSql({
  49. name: this.dbName,
  50. sql: `CREATE TABLE IF NOT EXISTS ${dbTable}(${data})`,
  51. success(e) {
  52. resolve(e);
  53. },
  54. fail(e) {
  55. reject(e);
  56. }
  57. })
  58. })
  59. },
  60. // 数据库删表 sql:'DROP TABLE dbTable'
  61. dropTable(dbTable) {
  62. return new Promise((resolve, reject) => {
  63. plus.sqlite.executeSql({
  64. name: this.dbName,
  65. sql: `DROP TABLE ${dbTable}`,
  66. success(e) {
  67. resolve(e);
  68. },
  69. fail(e) {
  70. reject(e);
  71. }
  72. })
  73. })
  74. },
  75. // 向表格里添加数据 sql:'INSERT INTO dbTable VALUES('x','x','x')' 对应新增
  76. // 或者 sql:'INSERT INTO dbTable ('x','x','x') VALUES('x','x','x')' 具体新增
  77. // 插入 INSERT INTO 、 dbTable 是表名、根据表头列名插入列值
  78. insertTableData(dbTable, data, condition) {
  79. // 判断有没有传参
  80. if (dbTable !== undefined && data !== undefined) {
  81. // 判断传的参是否有值
  82. var bol = (JSON.stringify(data) == "{}");
  83. if (!bol) {
  84. if (condition == undefined) {
  85. var sql = `INSERT INTO ${dbTable} VALUES('${data}')`;
  86. } else {
  87. var sql = `INSERT INTO ${dbTable} (${condition}) VALUES(${data})`;
  88. }
  89. return new Promise((resolve, reject) => {
  90. // 表格添加数据
  91. plus.sqlite.executeSql({
  92. name: this.dbName,
  93. sql: sql,
  94. success(e) {
  95. resolve(e);
  96. },
  97. fail(e) {
  98. reject(e);
  99. }
  100. })
  101. })
  102. } else {
  103. return new Promise((resolve, reject) => {
  104. reject("错误添加")
  105. })
  106. }
  107. } else {
  108. return new Promise((resolve, reject) => {
  109. reject("错误添加")
  110. })
  111. }
  112. },
  113. // 根据条件向表格里添加数据 有数据更新、无数据插入
  114. // (建表时需要设置主键) 例如 --- "roomid" varchar(50) PRIMARY KEY
  115. insertOrReplaceData(dbTable, data, condition) {
  116. // 判断有没有传参
  117. if (dbTable !== undefined && data !== undefined) {
  118. if (condition == undefined) {
  119. var sql = `INSERT OR REPLACE INTO ${dbTable} VALUES('${data}')`;
  120. } else {
  121. var sql = `INSERT OR REPLACE INTO ${dbTable} (${condition}) VALUES(${data})`;
  122. }
  123. return new Promise((resolve, reject) => {
  124. // 表格添加数据
  125. plus.sqlite.executeSql({
  126. name: this.dbName,
  127. sql: sql,
  128. success(e) {
  129. resolve(e);
  130. },
  131. fail(e) {
  132. reject(e);
  133. }
  134. })
  135. })
  136. } else {
  137. return new Promise((resolve, reject) => {
  138. reject("错误添加")
  139. })
  140. }
  141. },
  142. // 查询获取数据库里的数据 sql:'SELECT * FROM dbTable WHERE lname = 'lvalue''
  143. // 查询 SELECT * FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值
  144. selectTableData(dbTable, lname, lvalue, cc, dd) {
  145. if (dbTable !== undefined) {
  146. // 第一个是表单名称,后两个参数是列表名,用来检索
  147. if (lname !== undefined && cc !== undefined) {
  148. // 两个检索条件
  149. var sql = `SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${cc} = '${dd}'`;
  150. }
  151. if (lname !== undefined && cc == undefined) {
  152. // 一个检索条件
  153. var sql = `SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;
  154. }
  155. if (lname == undefined) {
  156. var sql = `SELECT * FROM ${dbTable}`;
  157. }
  158. return new Promise((resolve, reject) => {
  159. // 表格查询数据 执行查询的SQL语句
  160. plus.sqlite.selectSql({
  161. name: this.dbName,
  162. sql: sql,
  163. success(e) {
  164. resolve(e);
  165. },
  166. fail(e) {
  167. reject(e);
  168. }
  169. })
  170. })
  171. } else {
  172. return new Promise((resolve, reject) => {
  173. reject("错误查询")
  174. });
  175. }
  176. },
  177. // 删除表里的数据 sql:'DELETE FROM dbTable WHERE lname = 'lvalue''
  178. // 删除 DELETE FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值
  179. deleteTableData(dbTable, lname, lvalue, ww, ee) {
  180. if (dbTable !== undefined) {
  181. if (lname == undefined) {
  182. var sql = `DELETE FROM ${dbTable}`;
  183. } else {
  184. if (ww !== undefined) {
  185. // 两个检索条件
  186. var sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${ww} = '${ee}'`;
  187. } else {
  188. // 一个检索条件
  189. var sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;
  190. }
  191. }
  192. return new Promise((resolve, reject) => {
  193. // 删除表数据
  194. plus.sqlite.executeSql({
  195. name: this.dbName,
  196. sql: sql,
  197. success(e) {
  198. resolve(e);
  199. },
  200. fail(e) {
  201. reject(e);
  202. }
  203. })
  204. })
  205. } else {
  206. return new Promise((resolve, reject) => {
  207. reject("错误删除")
  208. });
  209. }
  210. },
  211. // 修改数据表里的数据 sql:"UPDATE dbTable SET 列名 = '列值',列名 = '列值' WHERE lname = 'lvalue'"
  212. // 修改 UPDATE 、 dbTable 是表名, data: 要修改的列名=修改后列值, lname,lvalue 是查询条件的列名和列值
  213. updateTableData(dbTable, data, lname, lvalue) {
  214. if (lname == undefined) {
  215. var sql = `UPDATE ${dbTable} SET ${data}`;
  216. } else {
  217. var sql = `UPDATE ${dbTable} SET ${data} WHERE ${lname} = '${lvalue}'`;
  218. }
  219. // WHERE 前面是要修改的列名、列值,后面是条件的列名、列值
  220. return new Promise((resolve, reject) => {
  221. // 修改表数据
  222. plus.sqlite.executeSql({
  223. name: this.dbName,
  224. sql: sql,
  225. success(e) {
  226. resolve(e);
  227. },
  228. fail(e) {
  229. reject(e);
  230. }
  231. })
  232. })
  233. },
  234. // 获取指定数据条数 sql:"SELECT * FROM dbTable ORDER BY 'id' DESC LIMIT 15 OFFSET 'num'"
  235. // dbTable 表名, ORDER BY 代表排序默认正序, id 是排序的条件 DESC 代表倒序,从最后一条数据开始拿
  236. // LIMIT 15 OFFSET '${num}',这句的意思是跳过 num 条拿 15 条数据, num 为跳过多少条数据是动态值
  237. // 例 初始num设为0,就从最后的数据开始拿15条,下次不拿刚获取的数据,所以可以让num为15,这样就能一步一步的拿完所有的数据
  238. pullSQL(dbTable, id, num) {
  239. return new Promise((resolve, reject) => {
  240. plus.sqlite.selectSql({
  241. name: this.dbName,
  242. sql: `SELECT * FROM ${dbTable} ORDER BY '${id}' DESC LIMIT 15 OFFSET '${num}'`,
  243. success(e) {
  244. resolve(e);
  245. },
  246. fail(e) {
  247. reject(e);
  248. }
  249. })
  250. })
  251. }
  252. }