sqlite.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  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. // console.log(sql);
  90. return new Promise((resolve, reject) => {
  91. // 表格添加数据
  92. plus.sqlite.executeSql({
  93. name: this.dbName,
  94. sql: sql,
  95. success(e) {
  96. resolve(e);
  97. },
  98. fail(e) {
  99. reject(e);
  100. }
  101. })
  102. })
  103. } else {
  104. return new Promise((resolve, reject) => {
  105. reject("错误添加")
  106. })
  107. }
  108. } else {
  109. return new Promise((resolve, reject) => {
  110. reject("错误添加")
  111. })
  112. }
  113. },
  114. // 根据条件向表格里添加数据 有数据更新、无数据插入
  115. // (建表时需要设置主键) 例如 --- "roomid" varchar(50) PRIMARY KEY
  116. insertOrReplaceData(dbTable, data, condition) {
  117. // 判断有没有传参
  118. if (dbTable !== undefined && data !== undefined) {
  119. if (condition == undefined) {
  120. var sql = `INSERT OR REPLACE INTO ${dbTable} VALUES('${data}')`;
  121. } else {
  122. var sql = `INSERT OR REPLACE INTO ${dbTable} (${condition}) VALUES(${data})`;
  123. }
  124. // console.log(sql);
  125. return new Promise((resolve, reject) => {
  126. // 表格添加数据
  127. plus.sqlite.executeSql({
  128. name: this.dbName,
  129. sql: sql,
  130. success(e) {
  131. resolve(e);
  132. },
  133. fail(e) {
  134. reject(e);
  135. }
  136. })
  137. })
  138. } else {
  139. return new Promise((resolve, reject) => {
  140. reject("错误添加")
  141. })
  142. }
  143. },
  144. // 查询获取数据库里的数据 sql:'SELECT * FROM dbTable WHERE lname = 'lvalue''
  145. // 查询 SELECT * FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值
  146. selectTableData(dbTable, lname, lvalue, cc, dd) {
  147. if (dbTable !== undefined) {
  148. // 第一个是表单名称,后两个参数是列表名,用来检索
  149. if (lname !== undefined && cc !== undefined) {
  150. // 两个检索条件
  151. var sql = `SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${cc} = '${dd}'`;
  152. }
  153. if (lname !== undefined && cc == undefined) {
  154. // 一个检索条件
  155. var sql = `SELECT * FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;
  156. // console.log(sql);
  157. }
  158. if (lname == undefined) {
  159. var sql = `SELECT * FROM ${dbTable}`;
  160. }
  161. return new Promise((resolve, reject) => {
  162. // 表格查询数据 执行查询的SQL语句
  163. plus.sqlite.selectSql({
  164. name: this.dbName,
  165. sql: sql,
  166. success(e) {
  167. resolve(e);
  168. },
  169. fail(e) {
  170. reject(e);
  171. }
  172. })
  173. })
  174. } else {
  175. return new Promise((resolve, reject) => {
  176. reject("错误查询")
  177. });
  178. }
  179. },
  180. // 删除表里的数据 sql:'DELETE FROM dbTable WHERE lname = 'lvalue''
  181. // 删除 DELETE FROM 、 dbTable 是表名、 WHERE 查找条件 lname,lvalue 是查询条件的列名和列值
  182. deleteTableData(dbTable, lname, lvalue, ww, ee) {
  183. if (dbTable !== undefined) {
  184. if (lname == undefined) {
  185. var sql = `DELETE FROM ${dbTable}`;
  186. } else {
  187. if (ww !== undefined) {
  188. // 两个检索条件
  189. var sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}' AND ${ww} = '${ee}'`;
  190. } else {
  191. // 一个检索条件
  192. var sql = `DELETE FROM ${dbTable} WHERE ${lname} = '${lvalue}'`;
  193. }
  194. }
  195. return new Promise((resolve, reject) => {
  196. // 删除表数据
  197. plus.sqlite.executeSql({
  198. name: this.dbName,
  199. sql: sql,
  200. success(e) {
  201. resolve(e);
  202. },
  203. fail(e) {
  204. reject(e);
  205. }
  206. })
  207. })
  208. } else {
  209. return new Promise((resolve, reject) => {
  210. reject("错误删除")
  211. });
  212. }
  213. },
  214. // 修改数据表里的数据 sql:"UPDATE dbTable SET 列名 = '列值',列名 = '列值' WHERE lname = 'lvalue'"
  215. // 修改 UPDATE 、 dbTable 是表名, data: 要修改的列名=修改后列值, lname,lvalue 是查询条件的列名和列值
  216. updateTableData(dbTable, data, lname, lvalue) {
  217. if (lname == undefined) {
  218. var sql = `UPDATE ${dbTable} SET ${data}`;
  219. } else {
  220. var sql = `UPDATE ${dbTable} SET ${data} WHERE ${lname} = '${lvalue}'`;
  221. }
  222. // WHERE 前面是要修改的列名、列值,后面是条件的列名、列值
  223. return new Promise((resolve, reject) => {
  224. // 修改表数据
  225. plus.sqlite.executeSql({
  226. name: this.dbName,
  227. sql: sql,
  228. success(e) {
  229. resolve(e);
  230. },
  231. fail(e) {
  232. reject(e);
  233. }
  234. })
  235. })
  236. },
  237. // 获取指定数据条数 sql:"SELECT * FROM dbTable ORDER BY 'id' DESC LIMIT 15 OFFSET 'num'"
  238. // dbTable 表名, ORDER BY 代表排序默认正序, id 是排序的条件 DESC 代表倒序,从最后一条数据开始拿
  239. // LIMIT 15 OFFSET '${num}',这句的意思是跳过 num 条拿 15 条数据, num 为跳过多少条数据是动态值
  240. // 例 初始num设为0,就从最后的数据开始拿15条,下次不拿刚获取的数据,所以可以让num为15,这样就能一步一步的拿完所有的数据
  241. pullSQL(dbTable, id, num) {
  242. return new Promise((resolve, reject) => {
  243. plus.sqlite.selectSql({
  244. name: this.dbName,
  245. sql: `SELECT * FROM ${dbTable} ORDER BY '${id}' DESC LIMIT 15 OFFSET '${num}'`,
  246. success(e) {
  247. resolve(e);
  248. },
  249. fail(e) {
  250. reject(e);
  251. }
  252. })
  253. })
  254. }
  255. }