zoukankan      html  css  js  c++  java
  • Unity3D 使用SQLite

      使用Unity操作SQLite,需要用到三个库文件,分别是Mono.Data.Sqlite.dll和System.Data.dll和Sqlite3.dll,前两个库文件可以在unity中找到,具体步骤:先找到unity安装位置,具体路径如下

    (许多人都推荐去2.0目录中找,我用的是4.5,因为2.0会报错),Sqlite3.dll可以去官网下载

    配置好环境就可以对数据库进行操作了

    这是一些常用操作

    using UnityEngine;
    using Mono.Data.Sqlite;
    using System;
    
    ///<summary>
    ///数据库辅助类
    ///</summary>
    public class SQLiteHelp
    {
        private SqliteConnection dbConnection;
        private SqliteCommand dbCommand;
        private SqliteDataReader dbReader;
    
        public SQLiteHelp(string conStr)
        {
            OpenSQLite(conStr);
        }
    
        //打开数据库
        public void OpenSQLite(string conStr)
        {
            try
            {      
                dbConnection = new SqliteConnection(conStr);
                dbConnection.Open();
                Debug.Log("Connect successful!");
            }
            catch (Exception ex)
            {
                Debug.Log(ex.Message);
            }
        }
    
        //创建表
        public SqliteDataReader CreateTable(string tabName, string[] col, string[] colType)
        {
            if (col.Length != colType.Length)
            {
                throw new SqliteException("columns.Length != colType.Length");
            }
    
            string query = "CREATE TABLE " + tabName + " (" + col[0] + " " + colType[0];
    
            for (int i = 1; i < col.Length; ++i)
            {
                query += ", " + col[i] + " " + colType[i];
            }
    
            query += ")";
    
            return ExecuteQuery(query);
        }
    
        //连接数据库
        public void CloseSqlConnection()
    
        {
            if (dbCommand != null)
            {
                dbCommand.Dispose();
            }
            dbCommand = null;
    
            if (dbReader != null)
            {
                dbReader.Dispose();
            }
            dbReader = null;
    
            if (dbConnection != null)
            {
                dbConnection.Close();
            }
            dbConnection = null;
    
            Debug.Log("Disconnected from db.");
        }
    
        //执行sqlQuery操作 
        public SqliteDataReader ExecuteQuery(string sqlQuery)
        {
            dbCommand = dbConnection.CreateCommand();
            dbCommand.CommandText = sqlQuery;
            dbReader = dbCommand.ExecuteReader();
    
            return dbReader;
        }
    
        //插入数据
        public SqliteDataReader InsertInto(string tableName, string[] values)
        {
            string query = "INSERT INTO " + tableName + " VALUES (" + values[0];
    
            for (int i = 1; i < values.Length; ++i)
            {
                query += ", " + values[i];
            }
    
            query += ")";
    
            return ExecuteQuery(query);
        }
    
        //查找表中所有数据
        public SqliteDataReader ReadFullTable(string tableName)
        {
            string query = "SELECT * FROM " + tableName;
    
            return ExecuteQuery(query);
        }
    
        //查找表中指定数据
        public SqliteDataReader ReadSpecificData(string tableName, string selectkey, string selectvalue)
        {
            string query = "SELECT * FROM " + tableName + " where " + selectkey + " = " + selectvalue + " ";
    
            return ExecuteQuery(query);
        }
    
    
        //更新数据  SQL语法:UPDATE table_name SET column1 = value1, column2 = value2....columnN = valueN[WHERE  CONDITION];
        public SqliteDataReader UpdateInto(string tableName, string[] cols, string[] colsvalues, string selectkey, string selectvalue)
        {
            string query = "UPDATE " + tableName + " SET " + cols[0] + " = " + colsvalues[0];
    
            for (int i = 1; i < colsvalues.Length; ++i)
            {
                query += ", " + cols[i] + " =" + colsvalues[i];
            }
    
            query += " WHERE " + selectkey + " = " + selectvalue + " ";
    
            return ExecuteQuery(query);
        }
    
        //删除表中的内容  DELETE FROM table_name  WHERE  {CONDITION or CONDITION}(删除所有符合条件的内容)
        public SqliteDataReader Delete(string tableName, string[] cols, string[] colsvalues)
        {
            string query = "DELETE FROM " + tableName + " WHERE " + cols[0] + " = " + colsvalues[0];
    
            for (int i = 1; i < colsvalues.Length; ++i)
            {
                query += " or " + cols[i] + " = " + colsvalues[i];
            }
            
            return ExecuteQuery(query);
        }
    
        //插入指定的数据
        public SqliteDataReader InsertIntoSpecific(string tableName, string[] cols, string[] values)
        {
            if (cols.Length != values.Length)
            {
                throw new SqliteException("columns.Length != values.Length");
            }
    
            string query = "INSERT INTO " + tableName + "(" + cols[0];
    
            for (int i = 1; i < cols.Length; ++i)
            {
                query += ", " + cols[i];
            }
    
            query += ") VALUES (" + values[0];
    
            for (int i = 1; i < values.Length; ++i)
            {
                query += ", " + values[i];
            }
    
            query += ")";
    
            return ExecuteQuery(query);
        }
    
        //判断在指定列名中是否存在输入的值
        public bool ExitItem(string tableName,string itemName,string itemValue)
        {
            bool flag = false;
    
            dbReader = ReadFullTable(tableName);
    
            while (dbReader.Read())
            {
                for(int i=0; i<dbReader.FieldCount; i++)
                {
                    if(dbReader.GetName(i) == itemName)
                    {
                        if(dbReader.GetValue(i).ToString() == itemValue)
                        {
                            flag = true;
                            break;
                        }
                    }
                }
            }
    
            return flag;
        }
    }
    View Code

     如果不清楚SQLite基本操作,可以访问:https://www.yiibai.com/sqlite/date-and-time.html

  • 相关阅读:
    android 75 新闻列表页面
    android 74 下载文本
    android 73 下载图片
    android 72 确定取消对话框,单选对话框,多选对话框
    android 71 ArrayAdapter和SimpleAdapter
    android 70 使用ListView把数据显示至屏幕
    maven如何将本地jar安装到本地仓库
    Centos6.7搭建ISCSI存储服务器
    解决maven打包编译出现File encoding has not been set问题
    MySQL 解决 emoji表情 的方法,使用utf8mb4 字符集(4字节 UTF-8 Unicode 编码)
  • 原文地址:https://www.cnblogs.com/forever-Ys/p/11722601.html
Copyright © 2011-2022 走看看