SQL实战篇,数据库在Kooboo中的实际应用(一)

本文将结合实际操作与代码示例,展示SQL 在 Kooboo 中的实际应用

仅需两步:动态创建表 + 基础查询,无需复杂配置,快速上手!


一、动态创建表:插入数据

Kooboo 支持多种数据库,以 SQLite 为例,在数据插入方面提供了灵活的方式。既可以通过传统的先建表、定义字段,再插入数据的方式;也支持动态插入,即无需手动建表!当插入数据时若表或字段不存在时,会自动创建相应字段。

  • 在创建完站点后,进入编辑菜单 -> 选择数据库类型


    示例:创建 user 表:
    // 1. 定义数据对象
    var obj = {}
    obj.id = '1';  // 主键(若不指定,系统自动生成Guid)
    obj.id = '2';
    obj.name = '王强'
    obj.name = '老六'
    obj.phone = '10086';k.DB.sqlite.user.add(obj);  // 自动创建表及字段


    验证表结构

    1. 关闭开发者模式,进入后台  

    2. 站点 > 控制面板 > 预览路径 > 数据库 > Sqlite 表 > user,可查看自动生成的表结构:

     二、查询数据

    Kooboo 系统内置多种查询方式:

    • 原生 SQL 查询通过 k.DB.sqlite.query 方法执行标准 SQL 查询语句,这种方式借助 SQL 强大的查询功能,可实现复杂的数据筛选、排序等操作,适用于对查询结果有精细要求的场景。
      // 方法一:原生SQL查询
      var list = k.DB.sqlite.query("SELECT * FROM user");  // 从 user 表中查询所有记录
    • 封装方法查询find 和 findAll 方法提供字段匹配查询功能。能根据指定字段和匹配值快速查找记录。这种封装后的查询方式简单易用,适合简单条件查询场景。
      // 方法二:数据库封装查询
      var list = k.DB.sqlite.user.find("name =='老六'"); // 方法三:基于JSON对象查询
      // var list = k.DB.sqlite.user.findAll({phone : "10086"});
    • 基于JSON对象查询:通过 find 和 findAll 方法,可以直接用 JSON 对象作为查询条件,无需手动拼接 SQL。

    三、基础语法对比
    方法作用示例代码
    find返回 第一条匹配记录k.DB.sqlite.user.find({name: "老六"})
    findAll返回 所有匹配记录k.DB.sqlite.user.findAll({phone: "10086"})
    四、修改表结构

    直接插入新字段即可,Kooboo 会自动扩展表:

    // 新增 position 字段
    var user = { name: "李四", position: "工程师" };  
    k.DB.sqlite.user.add(user);  
    k.DB.SaveChanges();  

    此外,Kooboo 还提供了 execute 方法来执行 SQL 语句,如 k.DB.sqlite.execute("DELETE FROM Customer"); 可执行删除操作,满足了数据库操作的多样化需求。
     

    总结

    • 创建表:插入数据时自动完成,无需手动定义

    • 查询数据

      • all() 获取全部数据

      • find("字段名", 值) 精确匹配

      • query(SQL) 执行原生语句

    • 验证结果:通过后台管理界面实时查看数据

    下一步学习建议
    掌握条件查询运算符(如 GTLTCONTAINS)和分页查询。

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76383.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    克魔助手(Kemob)安装与注册完整教程 - Windows/macOS双平台指南

    iOS设备管理工具克魔助手便携版使用全指南 前言:为什么需要专业的iOS管理工具 在iOS开发和设备管理过程中,开发者经常需要突破系统限制,实现更深层次的控制和调试。本文将详细介绍一款实用的便携式工具的使用方法,帮助开发者快速…

    搜索插入位置 -- 二分查找

    目录 一&#xff1a;题目 二:算法原理 三&#xff1a;代码分析 一&#xff1a;题目 题目链接&#xff1a;35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 二:算法原理 三&#xff1a;代码分析 class Solution { public:int searchInsert(vector<int>&am…

    Apache Doris内存与超时参数配置详解

    一、查询任务内存限制调整 1. ​默认内存限制与问题定位 Apache Doris默认限制单个BE节点上的查询任务内存使用不超过2GB&#xff08;即exec_mem_limit2147483648字节&#xff09;。当复杂查询或大规模数据操作超过此限制时&#xff0c;会触发Memory limit exceeded错误。通过…

    龙虎榜——20250411

    今天缩量&#xff0c;上方压力依然在&#xff0c;外围还在升级&#xff0c;企稳还需要时日。 2025年4月11日龙虎榜行业方向分析 一、核心主线方向 半导体与芯片&#xff08;国产替代加速&#xff09; • 代表标的&#xff1a;圣邦股份&#xff08;模拟芯片&#xff09;、中电…

    若依前后端分离版本从mysql切换到postgresql数据库

    一、修改依赖&#xff1a; 修改admin模块pom.xml中的依赖,屏蔽或删除mysql依赖&#xff0c;增加postgresql依赖。 <!-- Mysql驱动包 --> <!--<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId> &l…

    自定义排序注意点

    这段 Java 代码展示了两种排序方式的用法&#xff0c;分别是&#xff1a; 对普通数组进行排序&#xff08;Integer[] nums&#xff09;对对象数组进行排序&#xff08;Student[] students&#xff09; 我来一步步给你讲清楚&#xff1a; ✅ 第1部分&#xff1a;普通数组降序排…

    第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组真题

    文章目录 1 幸运数题目描述&#xff1a;答案&#xff1a;4430091 代码&#xff1a; 2 有奖问答题目描述&#xff1a;重点&#xff1a;答案&#xff1a;8335366 代码&#xff1a; 3 平方差题目描述&#xff1a;思路&#xff1a;数学找规律代码&#xff1a; 4 更小的数题目描述&a…

    C++ 入门四:类与对象 —— 面向对象编程的核心基石

    一、类的定义 1. 类的基本形式 class 类名 { public: // 公有成员&#xff08;类内外均可访问&#xff09;数据类型 数据成员; // 公有数据成员数据类型 成员函数(参数列表); // 公有成员函数声明 protected: // 保护成员&#xff08;类内和派生类可访问&…

    嵌入式---电机分类

    一、按电流类型分类&#xff08;最基础分类&#xff09; 1. 直流电机&#xff08;DC Motor&#xff09; 工作原理&#xff1a;通过换向器&#xff08;有刷&#xff09;或电子换向&#xff08;无刷&#xff09;将直流电源转换为交变磁场&#xff0c;驱动转子旋转。 核心特点&a…

    【python】并行编程模块:threading / mutliprocess / parallel / Celery

    在并行编程中&#xff0c;Python 具有简化实现的内置和外部模块。 本书是基于Python3.X的。 Python的threading模块 Python的threading模块为模块 _thread 提供了一个抽象层&#xff0c;它是一个较低级别的模块。 它提供的功能可以帮助程序员完成基于线程开发并行系统的艰巨任…

    OpengGL教程(七)---摄像机

    本章参考官方教程&#xff1a;摄像机 本系列历史文 OpengGL教程(一)—OpenGL环境的配置(GLFW3,GLAD) OpengGL教程(二)—渲染一个简单的窗体 OpengGL教程(三)—使用VAO和VBO方式绘制三角形 OpengGL教程(四)—使用EBO方式绘制矩形 OpengGL教程(五)—纹理的应用 OpengGL教程(六)—…

    安卓手机怎样开启双WiFi加速

    1. 小米/Redmi手机 路径&#xff1a; 设置 → WLAN → 高级设置 → 双WLAN加速 操作&#xff1a; 开启功能后&#xff0c;可同时连接一个2.4GHz WiFi和一个5GHz WiFi&#xff08;或两个不同路由器&#xff09;。 可选择“智能选择”或手动指定辅助网络。 2. 华为/荣耀手机…

    什么是八步工作法?

    八步工作法&#xff0c;顾名思义&#xff0c;就是把一项工作拆分成八个步骤来完成。它的核心目的是让工作变得更有条理&#xff0c;更高效&#xff0c;避免忙而无序&#xff0c;做到事事有着落&#xff0c;件件有结果。这个方法在很多企业和单位中都有应用&#xff0c;尤其适合…

    前端Node.js的包管理工具npm指令

    ‌npm&#xff08;Node Package Manager&#xff09;是Node.js的包管理工具&#xff0c;主要用于安装、更新、删除和管理JavaScript包。以下是前端开发中常用的npm命令及其用途‌&#xff1a; 基本命令 npm提供了一系列命令行工具&#xff0c;用于执行各种包管理操作。以下是一…

    掌握C语言文件操作:从理论到实战指南

    文件操作是C语言编程中不可或缺的一部分&#xff0c;它使得程序能够持久化存储数据&#xff0c;并在需要时高效读写。本文将从基础概念到实战技巧&#xff0c;系统讲解C语言文件操作的核心知识点&#xff0c;并结合代码示例帮助读者深入理解。 一. 为什么需要文件操作&#xf…

    Linux 线程:从零构建多线程应用:系统化解析线程API与底层设计逻辑

    线程 线程的概述 在之前&#xff0c;我们常把进程定义为 程序执行的实例&#xff0c;实际不然&#xff0c;进程实际上只是维护应用程序的各种资源&#xff0c;并不执行什么。真正执行具体任务的是线程。 那为什么之前直接执行a.out的时候&#xff0c;没有这种感受呢&#xf…

    014_多线程

    多线程 多线程创建线程方式一&#xff1a;继承Thread类方式二&#xff1a;实现Runable接口方式三&#xff1a;实现Callbale接口 Thread的常用方法线程安全线程同步方式一&#xff1a;同步代码块同步方法方式三&#xff1a;Lock锁 线性池创建线程池处理Runnable任务处理Callable…

    机场跑道异物检测数据集VOC+YOLO格式33793张31类别

    数据集分辨率都是300x300,都是贴近地面拍摄&#xff0c;具体看图片 据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;33793 标注数量(xml文件…

    Spring Cloud 远程调用

    4.OpenFeign的实现原理是什么&#xff1f; 在使用OpenFeign的时候&#xff0c;主要关心两个注解&#xff0c;EnableFeignClients和FeignClient。整体的流程分为以下几个部分&#xff1a; 启用Feign代理&#xff0c;通过在启动类上添加EnableFeignClients注解&#xff0c;开启F…

    Unity中使用FMETP STREAM传输实时画面

    一、客户端&#xff08;发送端&#xff09; 总体思路&#xff1a;先把画面编码Encoder&#xff0c;再发送给服务端 新建场景&#xff0c;创建一个实体&#xff0c;名为FMnet&#xff0c;添加组件FMNetworkManager&#xff0c;将NetworkType设置为客户端Client&#xff0c;设置…