123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- import { FMDatabase } from 'FMDB';
- import { createSQLiteContextOptions, executeSqlOptions, selectSqlOptions, executeSqlOptionsResult, selectSqlOptionsResult, CreateSQLiteContext, transactionOptions } from '../interface.uts';
- import { createSQLiteContextFailImpl } from '../unierror.uts';
- class SQLiteContext extends FMDatabase {
- private databaseName: string | null;
- constructor(name: string) {
- let version = 1;
- const path = UTSiOS.getDataPath() + '/sqlite/' + name;
- super(path);
- this.databaseName = name;
- }
- public executeSql(options: executeSqlOptions) {
- const SqlArray = options.sql.split(';');
- let result: executeSqlOptionsResult = {
- data: [] as boolean[],
- errMsg: 'executeSql:ok',
- }
- try {
- for (let i = 0; i < SqlArray.length; i++) {
- if (SqlArray[i].length > 0) {
- const sql = SqlArray[i].replace(/^\s+/, '');
- try {
- this.executeQuery(sql);
- result.data.push(true);
- } catch {
- result.data.push(false);
- }
- }
- }
- options.success?.(result);
- } catch (e) {
- const data = result.data;
- result = new createSQLiteContextFailImpl(1000002);
- result.data = data;
- options.fail?.(result);
- }
- options.complete?.(result);
- return result;
- }
- public selectSql(options: selectSqlOptions) {
- const SqlArray = options.sql.split(';');
- let result: selectSqlOptionsResult = {
- data: [] as boolean[],
- errMsg: 'selectSql:ok',
- }
- try {
- for (let i = 0; i < SqlArray.length; i++) {
- if (SqlArray[i].length > 0) {
- const sql = SqlArray[i].replace(/^\s+/, '');
- try {
- const cursor = this.executeQueryWithFormat(sql);
- //获取查询结果的字符串并push到result.data中
- while (cursor.next()) {
- const row = cursor.getRow();
- result.data.push(row);
- }
- cursor.close();
- } catch {
- result.data.push("");
- }
- }
- }
- options.success?.(result);
- } catch (e) {
- const data = result.data;
- result = new createSQLiteContextFailImpl(1000003);
- result.data = data;
- options.fail?.(result);
- }
- options.complete?.(result);
- return result;
- }
- public transaction(options: transactionOptions) {
- const transaction = options.transaction;
- let result: executeSqlOptionsResult = {
- errMsg: 'transaction:ok',
- }
- try {
- if (transaction == 'begin') {
- //开启事务
- this.beginTransaction();
- } else if (transaction == 'commit') {
- //提交事务
- this.commit();
- } else if (transaction == 'rollback') {
- //回滚事务
- this.rollback();
- }
- options.success?.(result);
- } catch (e) {
- let errCode = 1000008;
- if (transaction == 'begin') {
- errCode = 1000004;
- } else if (transaction == 'commit') {
- errCode = 1000005;
- } else if (transaction == 'rollback') {
- errCode = 1000006;
- }
- result = new createSQLiteContextFailImpl(errCode);
- options.fail?.(result);
- }
- options.complete?.(result);
- return result;
- }
- }
- export const createSQLiteContext: CreateSQLiteContext = function (options: createSQLiteContextOptions) {
- const name = options.name + '.db';
- return new SQLiteContext(name);
- }
|