Unity实用小工具—以对象形式操作Sqlite

news2025/1/16 17:46:56
  • 一、介绍

1.1、版本说明:使用的Unity版本为个人版2020.3.39,数据库为Sqlite(一个轻量级跨平台数据库),Sqlite的查看管理工具可以在网上下载https://dbeaver.io/download/,可以直接保存下来使用。

1.2、数据库路径说明:创建的数据库位置编辑器状态时在“Assets/StreamingAssets”文件夹下,因为编辑状态下此路径可以修改,发布到Android等其他移动平台下改路径的内容有可能会无法修改导致数据库无法使用,只有只读功能。发布到Pico一体机时放置在“jar:file://" + Application.dataPath + "!/assets/"”路径下。

13、经测试可以在Pico 3一体机中正常使用增删改查功能。

1.4、主要内容:案例工程中的Plugins文件所有内容,Script中的“SQLite”和“SqlDB”两个文件。

  • 二、使用

2.1、创建数据库

        //创建数据库

        var tempDb = new SqlDB("AmblyopiaDb.db");

运行后会在“Assets/StreamingAssets”文件夹下生成一个名为“AmblyopiaDb.db”的数据库,刚开始需要刷新,如图2.1-1所示,在此文件夹下点击“Refresh”按钮刷新下即出现创建的数据库。注意:如果数据库已经存在则不会重新创建和覆盖。

图 2.1-1

2.2、用数据库管理工具查看数据库

如果安装了附件1的数据库管理工具,可以在图2.1-1中双击打开数据库文件,如图2.2.-1所示,此时数据库是空白的。如果双击没有连接到目标数据库,可能需要手动连接数据库。图2.2-1和图2.2-2所示都为没有添加到目标数据库时的状态。

图 2.2-1

图 2.2-2

  1. 如图2.2-3所示,点击数据库-》新建数据库连接

图 2.2-3

  1. 在弹出的选项框中选择SQLite,点击下一步。

图 2.2-4

  1. 在弹出的框中点击浏览,选择当前unity的数据库路径。如图2.2-5所示为最终连接上的状态,此时数据库为空,没有任何表。

图 2.2-5

2.3、创建数据库表

        //创建表格,以类的形式和数据库表进行映射

tempDb.M_Con.CreateTable<Person>();

创建表的时候可以直接将定义的数据类映射诚数据库的表,如图2.3-1所示为数据类和数据库表的对比图。可以看到定义的Person类呗完整的映射到数据库中的Person表中,包括类的名字、字段的类型和名字等。

 

图 2.3-1

2.4、在表中插入数据

  1. 插入单个数据:

          // //插入单个数据

        // var p = new Person

        // {

        //     Name = "Johnny",

        //     Surname = "Mnemonic",

        //     Age = 2122222

        // };

        //int tempIndex = tempDb.M_Con.Insert(p);

  1. 插入多条数据:

   插入多个数据

        //var tempListData = new[]{

        //    new Person{

        //        Id = 1,

        //        Name = "Tom",

        //        Surname = "Perez",

        //        Age = 56

        //    },

        //    new Person{

        //        Id = 2,

        //        Name = "Fred",

        //        Surname = "Arthurson",

        //        Age = 16

        //    },

        //    new Person{

        //        Id = 3,

        //        Name = "John",

        //        Surname = "Doe",

        //        Age = 25

        //    },

        //    new Person{

        //        Id = 4,

        //        Name = "Roberto",

        //        Surname = "Huertas",

        //        Age = 37

        //    }

        //};

        //tempDb.M_Con.InsertAll(tempListData);

运行上面的代码后,在数据库管理工具中选中表“Person”,点击“编辑数据”,如图2.4-1所示,此时可以看到新增的几条数据。

 

图 2.4-1

2.5、在表中查询数据

  //查询符合条件的所有的数据

        var tempP = tempDb.M_Con.Table<Person>().Where(x => x.Name == "Johnny" || x.Age == 56);

        ToConsole(tempP);

        //  查询符合条件的第一个数据

        var tempP1 = tempDb.M_Con.Table<Person>().Where(x => x.Age == 56).FirstOrDefault();

        ToConsole(tempP1.ToString());

查询结果通过自定义的“ToConsole”方法打印出来。“ToConsole”方法如下:

    private void ToConsole(IEnumerable<Person> people)

    {

        foreach (var person in people)

        {

            ToConsole(person.ToString());

        }

    }

    private void ToConsole(string msg)

    {

        Debug.Log(msg);

    }

2.6、修改表中的数据

        //修改单个数据,必须给输入的数据添加Id,即修改指定Id的数据,否则无效

        //待修改为的数据

        var p = new Person

        {

            Id = 2,

            Name = "Johnny",

            Surname = "Mnemonic",

            Age = 2122222

        };

var tempIndex = tempDb.M_Con.Update(p);

上述代码修改时需要加上ID,否则修改无效,ID为每一行数据的唯一关键键。

2.7、删除数据

        //删除数据

        //待删除的数据,只需要Id对即可,其他的可以没有,也没有用,不做匹配

        var p = new Person

        {

            Id = 2,

        };

        var tempIndex = tempDb.M_Con.Delete(p);

        // 删除所有数据

        var tempIndex2 = tempDb.M_Con.DeleteAll<Person>();

        Debug.Log("测试:" + tempIndex2);

删除单个数据只需要设置待删除的ID即可,设置其内容也不影响,对象“p”中的字段值不会和表中对应ID的数据再进行匹配。

  • 三、附件

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

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

相关文章

微服务(四)——统一网关

目录1. 概念2. 实现网关1. 实现流程2. 小结3. 断言工厂4. 过滤器工厂1. GatewayFilter2. GlobalFilter3. 过滤器的执行顺序5. 解决跨域问题1. 概念 网关的作用&#xff1a; 认证、鉴权服务路由、负载均衡请求限流 网关的实现&#xff1a; gateway 基于Spring5中提供的WebFlu…

linux 设置登录提示语

勿以恶小而为之&#xff0c;勿以善小而不为---- 刘备 /etc/motd 文件里面 保存的是 登录后提示语 vim /etc/motd可以放置自定义的 文字信息 -------------------- 每天都要加油努力噢&#xff0c;岳泽霖!!! -------------------登录之后&#xff0c;就会展示信息: 参考链接: …

【Linux】Linux命令行git的使用

前进才是唯一的方向 文章目录一、git是什么&#xff1f;二、gitee仓库创建1.新建仓库2.复制仓库链接3.克隆远端仓库到本地来三、git提交代码1.下载git2. 配置用户名和邮箱&#xff08;否则git commit无法正常使用&#xff09;3. git提交代码三板斧3.1 git add&#xff08;将代…

git merge合并开发分支到上线分支遇到的问题,提示 no new changes

git merge 后 push 到 Gerrit 失败&#xff0c;提示 no new changes 解决思路&#xff1a; 分析&#xff1a;no new changes 的意思&#xff0c;是说&#xff0c;这个合并&#xff0c;是个线性的合并。而合并的那些历史的 commit 节点&#xff0c;在 gerrit 上都已经评审过了&…

在Linux中安装ShowDoc

在Linux中&#xff0c;有两种方式安装ShowDoc。第一种是自动脚本安装&#xff0c;第二种是手动安装。官方推荐使用自动脚本安装ShowDoc。如果自动脚本安装ShowDoc失败&#xff0c;可以考虑手动安装ShowDoc。 自动脚本安装ShowDoc 自动脚本利用docker来安装运行环境&#xff0…

酒鬼私定,只是酒鬼酒一次破圈营销?

围坐红泥小火炉&#xff0c;煮酒谈今夕。 过去一年多时间&#xff0c;经历了业绩向上&#xff0c;股市向下的反差时期后&#xff0c;越来越多人意识到白酒行业已步入存量时代。 2022年前三季度&#xff0c;中国规模以上白酒行业实现总产量487.9万千升&#xff0c;同比减少2.5…

proxychains for Windows

proxychains for Windows背景介绍项目地址使用scoop安装proxychains for windows验证命令行能否调用proxychains配置代理使用为Windows终端配置proxy--适用于cmd为Windows终端配置proxy--适用于PowerShellpowershell配置变量背景介绍 有时候Windows下的一些命令行程序想要挂代…

正大国际期货:外盘德指期货交易应该怎么做?

作为一个期货交易者&#xff0c;想要在市场上生存下来&#xff0c;就必须针对各种可能性都有所准备。比如&#xff0c;如果你强烈看涨&#xff0c;就必须准备好应对市场打你个冷不防的可能。相反&#xff0c;如果你对眼前的涨势高度怀疑&#xff0c;也不能彻底排除上演一场黑天…

ElasticSearch安装和部署和整合springboot

因为项目每次用到&#xff0c;每次重新搭都踩坑&#xff0c;特此记录一些坑&#xff0c;防止花费大量时间在搭建和整合上面安装 准备好压缩包elasticsearch-6.2.4解压 在config文件夹下配置文件elasticsearch.yml&#xff0c;可更改自行喜欢的端口和配置账号密码安装中文分词器…

git笔记

coderwhy听课笔记 什么是集中式 分布式 集中式是将整个仓库放到服务器&#xff1b;分布式是每台电脑上都有对应的仓库&#xff0c;可以在本地提交&#xff0c;之后把本地的仓库同步到服务器的仓库里 git安装 除了能使用git命令&#xff0c;还安装了git bash,git GUI git ba…

mysql数据库有关教程

我们打开Navicat 我使用的是16版本的,我们选择连接,我们新建连接 这里会有菜单栏目,比如说常规,高级,数据,SSL,SSH HTTP 其他的我们先不看,后期有机会我会解释的,先看常规 连接名字,就是你可以自己命名一个名字,也可以不写,比如说连接名字 studentdemo1 主机默认是localhos…

NetInside网络攻击分析帮您轻松发现可疑主机

分析概要 分析概要从以下三点做介绍。 分析内容 NetInside网络流量分析设备采集的流量。 分析时间 报告分析时间范围为&#xff1a;2020-09-28 07:58:00-11:58:00&#xff0c;时长共计3小时。 分析目的 本报告主要分析目的&#xff1a;查找和定位存在可疑现象的主机、查…

SHELL脚本学习 --- 第二天作业

SHELL脚本学习 — 第二天作业 思路&#xff1a; 这四道题都有条件判断的过程&#xff0c;可以使用if&#xff0c;也可以使用与运算。 linux的shell脚本中&#xff0c;与运算前一个命令执行成功&#xff0c;则执行后一个命令&#xff0c;反之则不执行&#xff0c;因此可以起到类…

cdb.exe的利用

cdb.exe的利用 0x01 简介 cdb 是安装 windows debugging tools 时自带的一个命令行调试工具&#xff0c;由微软签发证书。 0x02 cdb.exe加载shellcode ​ cdb.exe是调试工具&#xff0c;可以用来调试指定进程&#xff0c;并且可以在指定进程里分配RWX属性内存并写入shellcod…

临近年底,如何提高软件项目开发效率和开发速度?

1、任务自动分配功能 提高开发效率 为了提高团队的整个任务分配效率&#xff0c;CoCode自主研发任务“自动规划”功能&#xff0c;会根据当前任务属性以及人员技能登记等信息&#xff0c;实现迭代计划的一键规划&#xff0c;为项目经理智能规划出最优的项目计划以及人员工作安排…

ROS1学习笔记:服务数据的定义与使用(ubuntu20.04)

参考B站古月居ROS入门21讲&#xff1a;服务数据的定义与使用 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录一、模型图二、创建功能包三、自定义服务数据3.1 在package.xml中添加功能包依赖3.2 在CmakeLists.txt中添加编译选项3.3 编译生成的C文件和Python库四、代码实现…

DSPE-PEG-NPC 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-NPC ;功能聚乙二醇化试剂

DSPE-PEG-NPC 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-NPC 名称&#xff1a;DSPE-PEG-NPC 中文名称&#xff1a;二硬脂酰基磷脂酰乙醇胺-聚乙二醇-NPC 英文&#xff1a;1,2-distearoyl-sn-glycero-3-phosphoethanolamine-N-(polyethylene glycol)-NPC 性状&#xff1a;PEG2000为白色…

高校房产管理平台架构及安全性需求分析

数图互通高校房产综合管理平台是基于公司自主研发的FMCenterV5.0平台&#xff0c;是针对中国高校房产的管理特点和管理要求&#xff0c;研发的一套标准产品&#xff1b;通过在中国100多所高校的成功实施和迭代&#xff0c;形成了一套成熟、完善、全生命周期的房屋资源管理解决方…

Educational Codeforces Round 99 (Rated for Div. 2) D. Sequence and Swaps

翻译&#xff1a; 您将得到一个序列&#x1d44e;&#xff0c;该序列由&#x1d45b;个整数&#x1d44e;1、&#x1d44e;2、…、&#x1d44e;&#x1d45b;和一个整数&#x1d465;组成。您的任务是使序列&#x1d44e;排序(如果条件&#x1d44e;1≤&#x1d44e;2≤&…

java突发内存和CPU同时100%排查解决

问题说明 springBoot 微服务项目&#xff0c;生产环境突然CPU和内存使用率都100%&#xff0c;导致接口请求超时。 初步排查 接口慢首先排除数据库和慢sql的影响&#xff0c;本次问题是所有接口同事慢&#xff0c;不是单个接口&#xff0c;所以不是数据库问题。大面积接口慢很…