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