sqlite.js 7.3 KB

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