unity SqLite读取行和列

news2024/11/27 8:32:37

在这里插入图片描述
在这里插入图片描述
项目文件
链接:https://pan.baidu.com/s/1BabHvQ-y0kX_w15r7UvIGQ
提取码:emsg
–来自百度网盘超级会员V6的分享

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mono.Data.Sqlite;
using System;
using System.Data;
using System.Reflection;

public class ConnectSQL : MonoBehaviour
{

    public SqliteConnection m_SqliteConnection;
    public SqliteCommand m_SqliteCommand;
    public SqliteDataReader m_SqliteDataReader;
    private string m_data;
    private bool m_IsOpen;
    #region
    public void Start()
    {
        OpenDB();
    }
    private void OnDestroy()
    {
        CloseConnect();
    }
    private void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            if(m_IsOpen)
            {
                Select("img", "name");
              //  SelectColl("img", "qqq");
            }
           
        }
    }
    #endregion
    /// <summary>
    /// 打开数据库
    /// </summary>
    private void OpenDB()
    {
        try
        {
            string file = GetDataPath("test.db");
            m_SqliteConnection = new SqliteConnection(file);
            m_SqliteConnection.Open();
            m_IsOpen = true;
            m_SqliteCommand = m_SqliteConnection.CreateCommand();

            Debug.Log("打开成功");
           // ReadData();
         


        }
        catch (Exception e)
        {
            Debug.LogError(e.Message);
        }

    }
    /// <summary>
    /// 关闭数据库
    /// </summary>
    void CloseConnect()
    {
        m_SqliteConnection.Close();
        m_SqliteConnection = null;
        m_SqliteCommand.Dispose();
        m_SqliteCommand = null;
    }
    /// <summary>
    /// 不同平台地址
    /// </summary>
    /// <param name="databasePath"></param>
    /// <returns></returns>
    public string GetDataPath(string databasePath)
    {
#if UNITY_EDITOR
        return string.Concat("data source=", Application.streamingAssetsPath, "/", databasePath);
#endif
#if UNITY_ANDROID
            return string.Concat("URI=file:", Application.persistentDataPath, "/", databasePath);
#endif
#if UNITY_IOS
            return string.Concat("data source=", Application.persistentDataPath, "/", databasePath);
#endif
    }


    /// <summary>
    /// 读取整张表
    /// </summary>
    public void ReadData()
    {
        string sqlQuery = "SELECT * FROM img";   
        m_SqliteDataReader = ExecuteReader(sqlQuery);

        while (m_SqliteDataReader.Read())
        {
            for (int i = 0; i < m_SqliteDataReader.FieldCount; i++)
            {
                Debug.Log(m_SqliteDataReader.GetValue(i));
            }
        }
    }
    /// <summary>
    /// 读取行
    /// </summary>
    /// <param name="tableName">通过那列的命名来读取行</param>
    /// <param name="coll_value">读取那行的名字</param>
    public void SelectColl(string tableName, string coll_value)
    {

        string sql = "SELECT * FROM " + tableName + " WHERE name=" + "'" + coll_value + "'";//img是表名
       // string sql = "SELECT * FROM img WHERE name='asdad'";
        SqliteCommand sqliteCommand = new SqliteCommand(sql, m_SqliteConnection);
        SqliteDataReader sqliteDataReader = sqliteCommand.ExecuteReader();
        while (sqliteDataReader.Read())
        {
            for (int i = 0; i < sqliteDataReader.FieldCount; i++)
            {
                m_data += sqliteDataReader.GetValue(i)+",";
            }
        }

         Debug.Log(m_data);
        //接收到数据列入数据队
        // m_MySqlData.Enqueue(data);
        m_data = "";
        sqliteDataReader.Close();
        sqliteCommand.Dispose();
        sqliteDataReader = null;
        sqliteCommand = null;
    }
    /// <summary>
    /// 读取列
    /// </summary>
    /// <param name="tableName"></param>
    /// <param name="column_name">行的条件值</param>
    public void Select(string tableName, string column_name)
    {
        string sql = "SELECT " + column_name + " FROM " + tableName;
        SqliteCommand cmd = new SqliteCommand(sql, m_SqliteConnection);
        SqliteDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            for (int i = 0; i < reader.FieldCount; i++)
            {
                Debug.Log(reader.GetValue(i));
            }          
        }
        cmd.Dispose();
        reader.Close();
    }
    /// <summary>
    /// 执行SQL语句
    /// </summary>
    /// <param name="command"></param>
    /// <returns></returns>
    public SqliteDataReader ExecuteReader(string command)
    {
#if UNITY_EDITOR
        Debug.Log("SQL:ExecuteReader " + command);
#endif
        m_SqliteCommand.CommandText = command;
        m_SqliteDataReader = m_SqliteCommand.ExecuteReader();
        return m_SqliteDataReader;
    }
}

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【计算机网络】【新加坡南洋理工大学】【Computer Control Network】【广域网和局域网简介】【中英对照(自译)】

一、说明 仅供学习使用。 二、广域网&#xff08;WAN&#xff09;和局域网&#xff08;LAN&#xff09;简介

21所考408的院校有哪些?

计算机考研一直是考研的热门&#xff0c;那么在决定要参加计算机考研的时候&#xff0c;就要确定自己的复习方向&#xff0c;主流的复习方向有两类&#xff0c;一类是统考&#xff0c;也就是大家常说的408&#xff0c;还有一类是自命题&#xff0c;每一个学校的自命题都有所区别…

Windows10配置Maven环境变量

Windows10配置Maven环境变量 1.首先鼠标右键【此电脑】&#xff0c;点击【属性】2.点击【高级系统设置】3.点击【环境变量】4.创建【MAVEN_HOME】变量&#xff0c;变量值为maven的安装目录5.点击【Path】变量&#xff0c;点击【编辑】按钮6.点击【新建】按钮&#xff0c;输入【…

数据结构:顺序栈

栈是一种先进后出的数据结构&#xff0c;只允许在一端&#xff08;栈顶&#xff09;操作&#xff0c;代码中top表示栈顶。 stack.h /* * 文件名称&#xff1a;stack.h * 创 建 者&#xff1a;cxy * 创建日期&#xff1a;2024年01月17日 * 描 述&#xff1a; …

k8s的对外服务---ingress

service的作用体现在两个方面&#xff1a; 集群内部&#xff1a;不断追踪pod的变化。他会更新endpoint中的pod对象&#xff0c;基于pod的IP地址不断变化的一种服务发现机制。 集群外部&#xff1a;类似负载均衡器&#xff0c;把流量IP端口&#xff0c;不涉及转发url(http、htt…

【k8s】Kubernetes技术和相关命令简介

一、 Kubernetes简介 Kubernetes是Google开源的一个容器编排引擎&#xff0c;它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时&#xff0c;通常要部署该应用的多个实例以便对应用请求进行负载均衡。kubernetes&#xff0c;简称K8s&#xff0…

《Redis:NoSQL演进之路与Redis深度实践解析》

文章目录 关于NoSQL为什么引入NoSQL1、单机MySQL单机年代的数据库瓶颈 2、Memcached&#xff08;缓存&#xff09; MySQL 垂直拆分 &#xff08;读写分离&#xff09;3、分库分表水平拆分MySQL集群4、如今的网络架构5、总结 NoSQL的定义NoSQL的分类 Redis入门Redis能干嘛&…

敏捷测试和DevOpes自动化测试的区别

敏捷测试和DevOps自动化测试在以下方面存在区别&#x1f447; 1️⃣目标 &#x1f388;敏捷测试的主要目标是提供快速的反馈和持续的改进&#xff0c;以便在开发过程中尽早发现和解决问题&#xff0c;从而提高软件的质量和可靠性。 &#x1f308;DevOps自动化测试的目标是提高软…

Vue3中动态组件使用

一&#xff0c;动态组件使用&#xff1a; 应用场景&#xff1a;动态绑定或切换组件 应用Vue3碎片&#xff1a; is 1.使用 a.组件A <div class"layout-base"><Button>红茶</Button> </div>a.组件B <div class"layout-base"&g…

一、Flask学习之HTML

一、Flask学习之HTML 1.运行简单页面 首先需要搭建环境&#xff1a; pip install flaskfrom flask import Flaskapp Flask(__name__)# 创建了网址 /show/info 和函数index之间的对应关系&#xff0c;以后用户在浏览器上访问/show/info&#xff0c;网站自动执行index函数 ap…

从uptime看linux平均负载

从前遇到系统卡顿只会top。。top看不出来怎么搞呢&#xff1f; Linux系统提供了丰富的命令行工具&#xff0c;以帮助用户和系统管理员监控和分析系统性能。在这些工具中&#xff0c;uptime、mpstat和pidstat是非常有用的命令&#xff0c;它们可以帮助你理解系统的平均负载以及资…

【JMeter】JMeter连OceanBase数据库

1、下载OB&#xff08;OceanBase简称&#xff0c;下同&#xff09;&#xff0c;下载地址&#xff1a;https://www.oceanbase.com/softwarecenter-enterprise 2、将下载下来的jar包放到jmeter安装目录的 lib 目录下&#xff0c;或者打开JMeter客户端&#xff0c;在测试计划中引入…

maven 配置http私服Since Maven 3.8.1 http repositories are blocked. 报错处理

刷maven报错 com.saas:pdf:pom:0.0.1 failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of maven-default-http-blocker has elapsed or …

CTF CRYPTO 密码学-4

题目名称&#xff1a;奇怪的先生 题目描述&#xff1a; 描述:oss先生将三个培根的中间一只移到了左边,然后咬了一小口最后一根&#xff0c;说真好吃&#xff0c;真是个奇怪的先生&#xff01; 密文&#xff1a;VlM5WnlXc0ZibEhmMmE1ZHYxMDlhVkdmMlk5WmtRPT0 分析 应该是根据题…

【萤火虫系列教程】3/5-Adobe Firefly 创意填充

003-Adobe Firefly 创意填充 创意填充 登录账号后&#xff0c;在主页点击创意填充的【生成】按钮&#xff0c;进入到创意填充页面 我们可以上传自己的图像 一键抠图 点击【背景】就可以把主图抠出来 点击【反转】就可以把背景抠出来 点击【清除】就可以恢复到图片原来…

C语言之通过指针操作字符串

下面我们来学习通过指针来灵活操作字符串的方法 判断字符串的长度 我们用对指针的遍历来实现判断字符串的长度 #include <stdio.h> int str_length(const char*s) {int len 0;while(*s)len;return len; } int main() {char str[128];printf("请输入字符&#xff…

【项目管理】CMMI-原因分析与解决过程(CAR)

概述&#xff1a; “原因分析与解决”通过预防缺陷或者问题的引入以及识别并适当纳入优秀过程性能的原因&#xff0c;改进质量与生产率。 目录 1、文档结构 2、原因分析与解决过程域包括如下活动 3、选择需要加以分析的结果(启动条件) 4、过程活动与实践对照表 5、实例 1、…

【深度学习入门】深度学习基础概念与原理

*&#xff08;本篇文章旨在帮助新手了解深度学习的基础概念和原理&#xff0c;不深入讨论算法及核心公式&#xff09; 目录 一、深度学习概述 1、什么是深度学习&#xff1f; 2、深度学习与传统机器学习的区别 3、深度学习的应用领域 二、深度学习基本原理 1、神经网络的…

渗透测试之Kali如何利用CVE-2019-0708漏洞渗透Win7

环境: 1.攻击者IP:192.168.1.10 系统: KALI2022(vmware 16.0) 2.靶机IP:192.168.1.8 系统:Windows 7 6.1.7601 Service Pack 1 Build 7601 已开启远程协助RDP服务开启了3389端口 问题描述: KALI 如何利用CVE-2019-0708漏洞渗透Win7 解决方案: 1.打开kali,msf搜索…

ES可视化工具--ElasticHD

说明 ElasticHD 是 github 上的一个开源的项目&#xff0c;所以他没有官方网站&#xff0c;但 github 上的项目界面也可称为是它的官方界面了。 在 github 上直接搜索 ElasticHD 即可找到它&#xff0c;下面我将留下它的直接跳转链接。ElasticHD 下载 在 github 上搜索到之后…