unity SqLite读取行和列

发布时间:2024年01月17日

在这里插入图片描述
在这里插入图片描述
项目文件
链接: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;
    }
}

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

文章来源:https://blog.csdn.net/qiao2037641855/article/details/135642772
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。