Ver Fonte

测试sqlite

gaoshuaixing há 3 anos atrás
pai
commit
183a62be4a

+ 33 - 0
electron/controller/example.js

@@ -81,6 +81,39 @@ class ExampleController extends Controller {
   }
 
   /**
+   * sqlite数据库操作 (测试功能,不要使用)
+   */   
+  async sqlitedbOperation(args) {
+    const { service } = this;
+    const paramsObj = args;
+    //console.log('eeeee paramsObj:', paramsObj);
+    const data = {
+      action: paramsObj.action,
+      result: null,
+      all_list: []
+    };
+    
+    switch (paramsObj.action) {
+      case 'add' :
+        data.result = await service.storage.addTestDataSqlite(paramsObj.info);;
+        break;
+      case 'del' :
+        data.result = await service.storage.delTestDataSqlite(paramsObj.delete_name);;
+        break;
+      case 'update' :
+        data.result = await service.storage.updateTestDataSqlite(paramsObj.update_name, paramsObj.update_age);
+        break;
+      case 'get' :
+        data.result = await service.storage.getTestDataSqlite(paramsObj.search_age);
+        break;
+    }
+
+    //data.all_list = await service.storage.getAllTestDataSqlite();
+
+    return data;
+  }
+
+  /**
    * 消息提示对话框
    */
   messageShow () {

+ 53 - 13
electron/service/storage.js

@@ -12,6 +12,8 @@ class StorageService extends Service {
 
   constructor (ctx) {
     super(ctx);
+
+    // lowdb数据库
     this.systemDB = Storage.JsonDB.connection('system');
     this.demoDB = Storage.JsonDB.connection('demo');  
     this.systemDBKey = {
@@ -21,6 +23,9 @@ class StorageService extends Service {
       preferences: 'preferences',
       test_data: 'test_data'
     };
+
+    // sqlite数据库
+    this.demoSqliteDB = Storage.JsonDB.connection('demo.db', 'sqlite');
   }
 
   /*
@@ -94,21 +99,56 @@ class StorageService extends Service {
   /*
    * all Test data
    */
-    async getAllTestData() {
-      const key = this.demoDBKey.test_data;
-      if (!this.demoDB.db.has(key).value()) {
-        this.demoDB.db.set(key, []).write();
-      }
-      let data = this.demoDB.db
-      .get(key)
-      .value();
+  async getAllTestData() {
+    const key = this.demoDBKey.test_data;
+    if (!this.demoDB.db.has(key).value()) {
+      this.demoDB.db.set(key, []).write();
+    }
+    let data = this.demoDB.db
+    .get(key)
+    .value();
+
+    if (_.isEmpty(data)) {
+      data = []
+    }
+
+    return data;
+  }
+
+  /*
+   * 增 Test data (sqlite)
+   */
+  async addTestDataSqlite(user) {
+    console.log("user:", user);
+  }
+
+  /*
+   * 删 Test data (sqlite)
+   */
+  async delTestDataSqlite(name = '') {
   
-      if (_.isEmpty(data)) {
-        data = []
-      }
+  }
+
+  /*
+   * 改 Test data (sqlite)
+   */
+  async updateTestDataSqlite(name= '', age = 0) {
+
+  }  
+
+  /*
+   * 查 Test data (sqlite)
+   */
+  async getTestDataSqlite(age = 0) {
+
+  }  
   
-      return data;
-    }
+  /*
+   * all Test data (sqlite)
+   */
+  async getAllTestDataSqlite() {
+
+  }  
 }
 
 module.exports = StorageService;

+ 1 - 0
frontend/src/api/main.js

@@ -20,6 +20,7 @@ const ipcApiRoute = {
   checkForUpdater: 'controller.example.checkForUpdater',
   downloadApp: 'controller.example.downloadApp',
   dbOperation: 'controller.example.dbOperation',
+  sqlitedbOperation: 'controller.example.sqlitedbOperation',
   uploadFile: 'controller.example.uploadFile',
   checkHttpServer: 'controller.example.checkHttpServer',
   doHttpRequest: 'controller.example.doHttpRequest',

+ 5 - 0
frontend/src/config/router.config.js

@@ -31,6 +31,11 @@ export const constantRouterMap = [
             name: 'BaseDBIndex',
             component: () => import('@/views/base/db/Index')
           },
+          // {
+          //   path: '/base/sqlitedb/index',
+          //   name: 'BaseSqliteDBIndex',
+          //   component: () => import('@/views/base/sqlitedb/Index')
+          // },
           {
             path: '/base/windowview/index',
             name: 'BaseWindowViewIndex',

+ 6 - 0
frontend/src/config/subMenu.js

@@ -33,6 +33,12 @@ export default {
 			pageName: 'BaseDBIndex',
 			params: {}
 		},
+		'menu_320' : {
+			icon: 'profile',
+			title: 'sqlite数据库',
+			pageName: 'BaseSqliteDBIndex',
+			params: {}
+		},
 		'menu_400' : {
 			icon: 'profile',
 			title: '视图',

+ 216 - 0
frontend/src/views/base/sqlitedb/Index.vue

@@ -0,0 +1,216 @@
+<template>
+  <div id="app-base-db">
+    <div class="one-block-1">
+      <span>
+        1. sqlite本地数据库 (测试功能,无法使用)
+      </span>
+    </div>  
+    <div class="one-block-2">
+      <a-row>
+        <a-col :span="8">
+          • 大数据量存储
+        </a-col>
+        <a-col :span="8">
+          • 高性能
+        </a-col>
+        <a-col :span="8">
+          • 类mysql语法
+        </a-col>
+      </a-row>
+    </div>
+    <div class="one-block-1">
+      <span>
+        2. 测试数据
+      </span>
+    </div>  
+    <div class="one-block-2">
+      <a-row>
+        <a-col :span="24">
+          {{ all_list }}
+        </a-col>
+      </a-row>
+    </div>    
+    <div class="one-block-1">
+      <span>
+        3. 添加数据
+      </span>
+    </div>  
+    <div class="one-block-2">
+      <a-row>
+        <a-col :span="6">
+          <a-input v-model="name" :value="name" addon-before="姓名" />
+        </a-col>
+        <a-col :span="3">
+        </a-col>
+        <a-col :span="6">
+          <a-input v-model="age" :value="age" addon-before="年龄" />
+        </a-col>
+        <a-col :span="3">
+        </a-col>
+        <a-col :span="6">
+          <a-button @click="sqlitedbOperation('add')">
+            添加
+          </a-button>
+        </a-col>
+      </a-row>
+    </div>
+    <div class="one-block-1">
+      <span>
+        4. 获取数据
+      </span>
+    </div>  
+    <div class="one-block-2">
+      <a-row>
+        <a-col :span="6">
+          <a-input v-model="search_age" :value="search_age" addon-before="年龄" />
+        </a-col>
+        <a-col :span="3">
+        </a-col>
+        <a-col :span="6">
+        </a-col>
+        <a-col :span="3">
+        </a-col>
+        <a-col :span="6">
+          <a-button @click="sqlitedbOperation('get')">
+            查找
+          </a-button>
+        </a-col>
+      </a-row>
+      <a-row>
+        <a-col :span="24">
+          {{ userList }}
+        </a-col>
+      </a-row>
+    </div>
+    <div class="one-block-1">
+      <span>
+        5. 修改数据
+      </span>
+    </div>  
+    <div class="one-block-2">
+      <a-row>
+        <a-col :span="6">
+          <a-input v-model="update_name" :value="update_name" addon-before="姓名" />
+        </a-col>
+        <a-col :span="3">
+        </a-col>
+        <a-col :span="6">
+          <a-input v-model="update_age" :value="update_age" addon-before="年龄" />
+        </a-col>
+        <a-col :span="3">
+        </a-col>
+        <a-col :span="6">
+          <a-button @click="sqlitedbOperation('update')">
+            更新
+          </a-button>
+        </a-col>
+      </a-row>
+    </div>
+    <div class="one-block-1">
+      <span>
+        6. 删除数据
+      </span>
+    </div>  
+    <div class="one-block-2">
+      <a-row>
+        <a-col :span="6">
+          <a-input v-model="delete_name" :value="delete_name" addon-before="姓名" />
+        </a-col>
+        <a-col :span="3">
+        </a-col>
+        <a-col :span="6">
+        </a-col>
+        <a-col :span="3">
+        </a-col>
+        <a-col :span="6">
+          <a-button @click="dbOperation('del')">
+            删除
+          </a-button>
+        </a-col>
+      </a-row>
+    </div>       
+  </div>
+</template>
+<script>
+import { ipcApiRoute } from '@/api/main'
+
+export default {
+  data() {
+    return {
+      name: '李四',
+      age: 20,
+      userList: ['空'],
+      search_age: 20,
+      update_name: '李四',
+      update_age: 31,
+      delete_name: '李四',
+      all_list: ['空']
+    };
+  },
+  mounted () {
+    this.getAllTestData();
+  },
+  methods: {
+    getAllTestData () {
+      const self = this;
+      const params = {
+        action: 'all',
+      }
+      this.$ipcInvoke(ipcApiRoute.sqlitedbOperation, params).then(res => {
+        console.log('res:', res);
+        if (res.all_list.length == 0) {
+          return false;
+        }
+        self.all_list = res.all_list;
+      }) 
+    },
+    sqlitedbOperation (ac) {
+      const self = this;
+      const params = {
+        action: ac,
+        info: {
+          name: this.name,
+          age: parseInt(this.age)
+        },
+        search_age: parseInt(this.search_age),
+        update_name: this.update_name,
+        update_age: parseInt(this.update_age),
+        delete_name: this.delete_name,
+      }
+      if (ac == 'add' && this.name.length == 0) {
+        self.$message.error(`请填写数据`);
+      }
+      this.$ipcInvoke(ipcApiRoute.sqlitedbOperation, params).then(res => {
+        console.log('res:', res);
+        if (ac == 'get') {
+          if (res.result.length == 0) {
+            self.$message.error(`没有数据`);
+            return;
+          }
+          self.userList = res.result;
+        }
+        if (res.all_list.length == 0) {
+          self.all_list = ['空'];
+          return;
+        }
+        self.all_list = res.all_list;
+        self.$message.success(`success`);
+      }) 
+    },
+  }
+};
+</script>
+<style lang="less" scoped>
+#app-base-db {
+  padding: 0px 10px;
+  text-align: left;
+  width: 100%;
+  .one-block-1 {
+    font-size: 16px;
+    padding-top: 10px;
+  }
+  .one-block-2 {
+    padding-top: 10px;
+  }
+}
+</style>